|
@@ -6040,17 +6040,18 @@ void ImGui::FocusWindow(ImGuiWindow* window)
|
|
|
|
|
|
// Move the root window to the top of the pile
|
|
|
IM_ASSERT(window->RootWindow != NULL);
|
|
|
- window = window->RootWindow;
|
|
|
+ ImGuiWindow* focus_front_window = window->RootWindow; // NB: In docking branch this is window->RootWindowDockStop
|
|
|
+ ImGuiWindow* display_front_window = window->RootWindow;
|
|
|
|
|
|
// Steal focus on active widgets
|
|
|
- if (window->Flags & ImGuiWindowFlags_Popup) // FIXME: This statement should be unnecessary. Need further testing before removing it..
|
|
|
- if (g.ActiveId != 0 && g.ActiveIdWindow && g.ActiveIdWindow->RootWindow != window)
|
|
|
+ if (focus_front_window->Flags & ImGuiWindowFlags_Popup) // FIXME: This statement may be unnecessary? Need further testing before removing it..
|
|
|
+ if (g.ActiveId != 0 && g.ActiveIdWindow && g.ActiveIdWindow->RootWindow != focus_front_window)
|
|
|
ClearActiveID();
|
|
|
|
|
|
// Bring to front
|
|
|
- BringWindowToFocusFront(window);
|
|
|
- if (!(window->Flags & ImGuiWindowFlags_NoBringToFrontOnFocus))
|
|
|
- BringWindowToDisplayFront(window);
|
|
|
+ BringWindowToFocusFront(focus_front_window);
|
|
|
+ if ((display_front_window->Flags & ImGuiWindowFlags_NoBringToFrontOnFocus) == 0)
|
|
|
+ BringWindowToDisplayFront(display_front_window);
|
|
|
}
|
|
|
|
|
|
void ImGui::FocusTopMostWindowUnderOne(ImGuiWindow* under_this_window, ImGuiWindow* ignore_window)
|