|
21 | 21 |
|
22 | 22 | // CHANGELOG
|
23 | 23 | // (minor and older changes stripped away, please see git history for details)
|
| 24 | +// 2024-08-19: Storing SDL_WindowID inside ImGuiViewport::PlatformHandle instead of SDL_Window*. |
24 | 25 | // 2024-08-19: ImGui_ImplSDL3_ProcessEvent() now ignores events intended for other SDL windows. (#7853)
|
25 | 26 | // 2024-07-22: Update for SDL3 api changes: SDL_GetGamepads() memory ownership change. (#7807)
|
26 | 27 | // 2024-07-18: Update for SDL3 api changes: SDL_GetClipboardText() memory ownership change. (#7801)
|
@@ -133,7 +134,8 @@ static void ImGui_ImplSDL3_SetClipboardText(void*, const char* text)
|
133 | 134 | static void ImGui_ImplSDL3_PlatformSetImeData(ImGuiContext*, ImGuiViewport* viewport, ImGuiPlatformImeData* data)
|
134 | 135 | {
|
135 | 136 | ImGui_ImplSDL3_Data* bd = ImGui_ImplSDL3_GetBackendData();
|
136 |
| - SDL_Window* window = (SDL_Window*)viewport->PlatformHandle; |
| 137 | + SDL_WindowID window_id = (SDL_WindowID)(intptr_t)viewport->PlatformHandle; |
| 138 | + SDL_Window* window = SDL_GetWindowFromID(window_id); |
137 | 139 | if ((data->WantVisible == false || bd->ImeWindow != window) && bd->ImeWindow != NULL)
|
138 | 140 | {
|
139 | 141 | SDL_StopTextInput(bd->ImeWindow);
|
@@ -413,7 +415,7 @@ bool ImGui_ImplSDL3_ProcessEvent(const SDL_Event* event)
|
413 | 415 |
|
414 | 416 | static void ImGui_ImplSDL3_SetupPlatformHandles(ImGuiViewport* viewport, SDL_Window* window)
|
415 | 417 | {
|
416 |
| - viewport->PlatformHandle = window; |
| 418 | + viewport->PlatformHandle = (void*)(intptr_t)SDL_GetWindowID(window); |
417 | 419 | viewport->PlatformHandleRaw = nullptr;
|
418 | 420 | #if defined(_WIN32) && !defined(__WINRT__)
|
419 | 421 | viewport->PlatformHandleRaw = (HWND)SDL_GetPointerProperty(SDL_GetWindowProperties(window), SDL_PROP_WINDOW_WIN32_HWND_POINTER, nullptr);
|
|
0 commit comments