mirror of
https://github.com/ocornut/imgui.git
synced 2026-01-21 01:44:21 +00:00
Focus: Reworking FocusWindow() so in Docking branch we can fix CTRL+Tab being out of order on Docked windows because WindowsFocusOreder is poorly maintained.
When merging this and d9bca0d8 in Docking we'll replace two ocurrences of RootWindow with RootWindowDockStop.
This commit is contained in:
parent
fb257eef3e
commit
fc41839cab
1 changed files with 7 additions and 6 deletions
13
imgui.cpp
13
imgui.cpp
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue