|
@@ -3483,10 +3483,6 @@ void ImGui::UpdatePlatformWindows()
|
|
IM_ASSERT(g.FrameCountEnded == g.FrameCount && "Forgot to call Render() or EndFrame() before UpdatePlatformWindows()?");
|
|
IM_ASSERT(g.FrameCountEnded == g.FrameCount && "Forgot to call Render() or EndFrame() before UpdatePlatformWindows()?");
|
|
IM_ASSERT(g.FrameCountPlatformEnded < g.FrameCount);
|
|
IM_ASSERT(g.FrameCountPlatformEnded < g.FrameCount);
|
|
g.FrameCountPlatformEnded = g.FrameCount;
|
|
g.FrameCountPlatformEnded = g.FrameCount;
|
|
-
|
|
|
|
- g.PlatformData.MainViewport = g.Viewports[0];
|
|
|
|
- g.PlatformData.Viewports.resize(0);
|
|
|
|
- g.PlatformData.Viewports.push_back(g.Viewports[0]);
|
|
|
|
if (!(g.IO.ConfigFlags & ImGuiConfigFlags_EnableViewports))
|
|
if (!(g.IO.ConfigFlags & ImGuiConfigFlags_EnableViewports))
|
|
return;
|
|
return;
|
|
|
|
|
|
@@ -3508,9 +3504,6 @@ void ImGui::UpdatePlatformWindows()
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|
|
- g.PlatformData.Viewports.push_back(viewport);
|
|
|
|
- IM_ASSERT(viewport->Window != NULL);
|
|
|
|
-
|
|
|
|
bool is_new_window = (viewport->PlatformHandle == NULL && viewport->PlatformUserData == NULL && viewport->RendererUserData == NULL);
|
|
bool is_new_window = (viewport->PlatformHandle == NULL && viewport->PlatformUserData == NULL && viewport->RendererUserData == NULL);
|
|
if (is_new_window && viewport->PlatformHandle == NULL && viewport->PlatformUserData == NULL)
|
|
if (is_new_window && viewport->PlatformHandle == NULL && viewport->PlatformUserData == NULL)
|
|
g.PlatformIO.Platform_CreateWindow(viewport);
|
|
g.PlatformIO.Platform_CreateWindow(viewport);
|
|
@@ -4417,6 +4410,19 @@ void ImGui::EndFrame()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // Update user-side viewport list
|
|
|
|
+ g.PlatformData.MainViewport = g.Viewports[0];
|
|
|
|
+ g.PlatformData.Viewports.resize(0);
|
|
|
|
+ for (int i = 0; i < g.Viewports.Size; i++)
|
|
|
|
+ {
|
|
|
|
+ ImGuiViewportP* viewport = g.Viewports[i];
|
|
|
|
+ if (viewport->LastFrameActive < g.FrameCount)
|
|
|
|
+ continue;
|
|
|
|
+ if (i > 0)
|
|
|
|
+ IM_ASSERT(viewport->Window != NULL);
|
|
|
|
+ g.PlatformData.Viewports.push_back(viewport);
|
|
|
|
+ }
|
|
|
|
+
|
|
// Sort the window list so that all child windows are after their parent
|
|
// Sort the window list so that all child windows are after their parent
|
|
// We cannot do that on FocusWindow() because childs may not exist yet
|
|
// We cannot do that on FocusWindow() because childs may not exist yet
|
|
g.WindowsSortBuffer.resize(0);
|
|
g.WindowsSortBuffer.resize(0);
|