Popups: fixed CloseInactivePopups() so that right-clicking to close one level of popups in a popups stack won't close the whole stack. This is done by properly refocusing the lower level popup. Fixes 87ae40843c (~#439)

docking
omar 7 years ago
parent 43df7eb5ea
commit 59a89774d7

@ -2802,9 +2802,7 @@ void ImGui::EndFrame()
// With right mouse button we close popups without changing focus // With right mouse button we close popups without changing focus
// (The left mouse button path calls FocusWindow which will lead NewFrame->CloseInactivePopups to trigger) // (The left mouse button path calls FocusWindow which will lead NewFrame->CloseInactivePopups to trigger)
if (g.IO.MouseClicked[1]) if (g.IO.MouseClicked[1])
{
CloseInactivePopups(g.HoveredWindow); CloseInactivePopups(g.HoveredWindow);
}
} }
} }
@ -3605,8 +3603,8 @@ static void CloseInactivePopups(ImGuiWindow* ref_window)
break; break;
} }
} }
if (n < g.OpenPopupStack.Size) // This test is not required but it allows to set a useful breakpoint on the line below if (n < g.OpenPopupStack.Size) // This test is not required but it allows to set a convenient breakpoint on the block below
g.OpenPopupStack.resize(n); ClosePopupToLevel(n);
} }
static ImGuiWindow* GetFrontMostModalRootWindow() static ImGuiWindow* GetFrontMostModalRootWindow()

Loading…
Cancel
Save