|
@@ -5289,13 +5289,15 @@ void ImGui::FocusPreviousWindowIgnoringOne(ImGuiWindow* ignore_window)
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
for (int i = g.WindowsFocusOrder.Size - 1; i >= 0; i--)
|
|
|
{
|
|
|
+ // We may later decide to test for different NoXXXInputs based on the active navigation input (mouse vs nav) but that may feel more confusing to the user.
|
|
|
ImGuiWindow* window = g.WindowsFocusOrder[i];
|
|
|
if (window != ignore_window && window->WasActive && !(window->Flags & ImGuiWindowFlags_ChildWindow))
|
|
|
- {
|
|
|
- ImGuiWindow* focus_window = NavRestoreLastChildNavWindow(window);
|
|
|
- FocusWindow(focus_window);
|
|
|
- return;
|
|
|
- }
|
|
|
+ if ((window->Flags & (ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoNavInputs)) != (ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoNavInputs))
|
|
|
+ {
|
|
|
+ ImGuiWindow* focus_window = NavRestoreLastChildNavWindow(window);
|
|
|
+ FocusWindow(focus_window);
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -5672,6 +5674,8 @@ bool ImGui::IsWindowFocused(ImGuiFocusedFlags flags)
|
|
|
}
|
|
|
|
|
|
// Can we focus this window with CTRL+TAB (or PadMenu + PadFocusPrev/PadFocusNext)
|
|
|
+// Note that NoNavFocus makes the window not reachable with CTRL+TAB but it can still be focused with mouse or programmaticaly.
|
|
|
+// If you want a window to never be focused, you may use the e.g. NoInputs flag.
|
|
|
bool ImGui::IsWindowNavFocusable(ImGuiWindow* window)
|
|
|
{
|
|
|
return window->Active && window == window->RootWindow && !(window->Flags & ImGuiWindowFlags_NoNavFocus);
|