Popups: removed an apparently unnecessary test in CloseInactivePopups() that broke Combo boxes inside menus (#272)

This commit is contained in:
ocornut 2015-07-14 09:21:41 -06:00
parent 355cbf6326
commit 8cfd963fda

View File

@ -3172,7 +3172,7 @@ static void CloseInactivePopups()
if (g.OpenedPopupStack.empty()) if (g.OpenedPopupStack.empty())
return; return;
// When popups are stacked, clicking on a lower level popups puts focus back to it and close popups above it // When popups are stacked, clicking on a lower level popups puts focus back to it and close popups above it.
// Don't close our own child popup windows // Don't close our own child popup windows
int n = 0; int n = 0;
if (g.FocusedWindow) if (g.FocusedWindow)
@ -3184,21 +3184,17 @@ static void CloseInactivePopups()
continue; continue;
IM_ASSERT((popup.Window->Flags & ImGuiWindowFlags_Popup) != 0); IM_ASSERT((popup.Window->Flags & ImGuiWindowFlags_Popup) != 0);
if (popup.Window->Flags & ImGuiWindowFlags_ChildWindow) if (popup.Window->Flags & ImGuiWindowFlags_ChildWindow)
{ continue;
if (g.FocusedWindow->RootWindow != popup.Window->RootWindow)
break; bool has_focus = false;
} for (int m = n; m < g.OpenedPopupStack.Size && !has_focus; m++)
else has_focus = (g.OpenedPopupStack[m].Window && g.OpenedPopupStack[m].Window->RootWindow == g.FocusedWindow->RootWindow);
{ if (!has_focus)
bool has_focus = false; break;
for (int m = n; m < g.OpenedPopupStack.Size && !has_focus; m++)
has_focus = (g.OpenedPopupStack[m].Window && g.OpenedPopupStack[m].Window->RootWindow == g.FocusedWindow->RootWindow);
if (!has_focus)
break;
}
} }
} }
g.OpenedPopupStack.resize(n); if (n < g.OpenedPopupStack.Size) // This test is not required but it allows to set a useful breakpoint on the line below
g.OpenedPopupStack.resize(n);
} }
static ImGuiWindow* GetFrontMostModalRootWindow() static ImGuiWindow* GetFrontMostModalRootWindow()