mirror of
https://github.com/Drezil/imgui.git
synced 2024-12-20 14:56:35 +00:00
Viewports: fix window with viewport ini data immediately merged into a host viewport from leaving a temporary viewport alive for a frame (would leak into backend).
This commit is contained in:
parent
6b77668171
commit
79d39b190b
@ -152,6 +152,8 @@ Docking+Viewports Branch:
|
|||||||
It would manifest when e.g. reconfiguring dock nodes while dragging.
|
It would manifest when e.g. reconfiguring dock nodes while dragging.
|
||||||
- Viewports: Fixed unnecessary creation of temporary viewports when multiple docked windows
|
- Viewports: Fixed unnecessary creation of temporary viewports when multiple docked windows
|
||||||
got reassigned to a new node (created mid-frame) which already has a HostWindow.
|
got reassigned to a new node (created mid-frame) which already has a HostWindow.
|
||||||
|
- Viewports: Fixed window with viewport ini data immediately merged into a host viewport from
|
||||||
|
leaving a temporary viewport alive for a frame (would leak into backend).
|
||||||
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
|
@ -11574,6 +11574,10 @@ void ImGui::SetCurrentViewport(ImGuiWindow* current_window, ImGuiViewportP* view
|
|||||||
|
|
||||||
static void SetWindowViewport(ImGuiWindow* window, ImGuiViewportP* viewport)
|
static void SetWindowViewport(ImGuiWindow* window, ImGuiViewportP* viewport)
|
||||||
{
|
{
|
||||||
|
// Abandon viewport
|
||||||
|
if (window->ViewportOwned && window->Viewport->Window == window)
|
||||||
|
window->Viewport->Size = ImVec2(0.0f, 0.0f);
|
||||||
|
|
||||||
window->Viewport = viewport;
|
window->Viewport = viewport;
|
||||||
window->ViewportId = viewport->ID;
|
window->ViewportId = viewport->ID;
|
||||||
window->ViewportOwned = (viewport->Window == window);
|
window->ViewportOwned = (viewport->Window == window);
|
||||||
@ -11606,6 +11610,7 @@ static bool ImGui::UpdateTryMergeWindowIntoHostViewport(ImGuiWindow* window, ImG
|
|||||||
if (GetWindowAlwaysWantOwnViewport(window))
|
if (GetWindowAlwaysWantOwnViewport(window))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// FIXME: Can't use g.WindowsFocusOrder[] for root windows only as we care about Z order. If we maintained a DisplayOrder along with FocusOrder we could..
|
||||||
for (int n = 0; n < g.Windows.Size; n++)
|
for (int n = 0; n < g.Windows.Size; n++)
|
||||||
{
|
{
|
||||||
ImGuiWindow* window_behind = g.Windows[n];
|
ImGuiWindow* window_behind = g.Windows[n];
|
||||||
|
Loading…
Reference in New Issue
Block a user