|
@@ -200,6 +200,12 @@ static bool ImGui_ImplSDL2_Init(SDL_Window* window, void* sdl_gl_context)
|
|
|
// Our mouse update function expect PlatformHandle to be filled for the main viewport
|
|
|
ImGuiViewport* main_viewport = ImGui::GetMainViewport();
|
|
|
main_viewport->PlatformHandle = (void*)window;
|
|
|
+#if defined(_WIN32)
|
|
|
+ SDL_SysWMinfo info;
|
|
|
+ SDL_VERSION(&info.version);
|
|
|
+ if (SDL_GetWindowWMInfo(window, &info))
|
|
|
+ main_viewport->PlatformHandleRaw = info.info.win.window;
|
|
|
+#endif
|
|
|
|
|
|
// We need SDL_CaptureMouse(), SDL_GetGlobalMouseState() from SDL 2.0.4+ to support multiple viewports.
|
|
|
// We left the call to ImGui_ImplSDL2_InitPlatformInterface() outside of #ifdef to avoid unused-function warnings.
|
|
@@ -455,16 +461,13 @@ static void ImGui_ImplSDL2_CreateWindow(ImGuiViewport* viewport)
|
|
|
}
|
|
|
if (use_opengl && backup_context)
|
|
|
SDL_GL_MakeCurrent(data->Window, backup_context);
|
|
|
- viewport->PlatformHandle = (void*)data->Window;
|
|
|
|
|
|
+ viewport->PlatformHandle = (void*)data->Window;
|
|
|
#if defined(_WIN32)
|
|
|
- // save the window handle for render that needs it (directX)
|
|
|
SDL_SysWMinfo info;
|
|
|
SDL_VERSION(&info.version);
|
|
|
if (SDL_GetWindowWMInfo(data->Window, &info))
|
|
|
- {
|
|
|
viewport->PlatformHandleRaw = info.info.win.window;
|
|
|
- }
|
|
|
#endif
|
|
|
}
|
|
|
|
|
@@ -487,28 +490,23 @@ static void ImGui_ImplSDL2_ShowWindow(ImGuiViewport* viewport)
|
|
|
{
|
|
|
ImGuiViewportDataSDL2* data = (ImGuiViewportDataSDL2*)viewport->PlatformUserData;
|
|
|
#if defined(_WIN32)
|
|
|
- SDL_SysWMinfo info;
|
|
|
- SDL_VERSION(&info.version);
|
|
|
- if (SDL_GetWindowWMInfo(data->Window, &info))
|
|
|
- {
|
|
|
- HWND hwnd = info.info.win.window;
|
|
|
+ HWND hwnd = (HWND)viewport->PlatformHandleRaw;
|
|
|
|
|
|
- // SDL hack: Hide icon from task bar
|
|
|
- // Note: SDL 2.0.6+ has a SDL_WINDOW_SKIP_TASKBAR flag which is supported under Windows but the way it create the window breaks our seamless transition.
|
|
|
- if (viewport->Flags & ImGuiViewportFlags_NoTaskBarIcon)
|
|
|
- {
|
|
|
- LONG ex_style = ::GetWindowLong(hwnd, GWL_EXSTYLE);
|
|
|
- ex_style &= ~WS_EX_APPWINDOW;
|
|
|
- ex_style |= WS_EX_TOOLWINDOW;
|
|
|
- ::SetWindowLong(hwnd, GWL_EXSTYLE, ex_style);
|
|
|
- }
|
|
|
+ // SDL hack: Hide icon from task bar
|
|
|
+ // Note: SDL 2.0.6+ has a SDL_WINDOW_SKIP_TASKBAR flag which is supported under Windows but the way it create the window breaks our seamless transition.
|
|
|
+ if (viewport->Flags & ImGuiViewportFlags_NoTaskBarIcon)
|
|
|
+ {
|
|
|
+ LONG ex_style = ::GetWindowLong(hwnd, GWL_EXSTYLE);
|
|
|
+ ex_style &= ~WS_EX_APPWINDOW;
|
|
|
+ ex_style |= WS_EX_TOOLWINDOW;
|
|
|
+ ::SetWindowLong(hwnd, GWL_EXSTYLE, ex_style);
|
|
|
+ }
|
|
|
|
|
|
- // SDL hack: SDL always activate/focus windows :/
|
|
|
- if (viewport->Flags & ImGuiViewportFlags_NoFocusOnAppearing)
|
|
|
- {
|
|
|
- ::ShowWindow(hwnd, SW_SHOWNA);
|
|
|
- return;
|
|
|
- }
|
|
|
+ // SDL hack: SDL always activate/focus windows :/
|
|
|
+ if (viewport->Flags & ImGuiViewportFlags_NoFocusOnAppearing)
|
|
|
+ {
|
|
|
+ ::ShowWindow(hwnd, SW_SHOWNA);
|
|
|
+ return;
|
|
|
}
|
|
|
#endif
|
|
|
|