Internals: Nav: Extracted code into IsWindowNavFocusable(). (#787)
diff --git a/imgui.cpp b/imgui.cpp
index fc4e042..6ef58a6 100644
--- a/imgui.cpp
+++ b/imgui.cpp
@@ -2669,11 +2669,8 @@
{
ImGuiContext& g = *GImGui;
for (int i = i_start; i >= 0 && i < g.Windows.Size && i != i_stop; i += dir)
- {
- ImGuiWindow* window = g.Windows[i];
- if (window->Active && window == window->RootNonPopupWindow && (!(window->Flags & ImGuiWindowFlags_NoNavFocus) || window == g.NavWindow))
- return window;
- }
+ if (ImGui::IsWindowNavFocusable(g.Windows[i]))
+ return g.Windows[i];
return NULL;
}
@@ -6650,6 +6647,13 @@
}
}
+// Can we focus this window with CTRL+TAB (or PadMenu + PadFocusPrev/PadFocusNext)
+bool ImGui::IsWindowNavFocusable(ImGuiWindow* window)
+{
+ ImGuiContext& g = *GImGui;
+ return window->Active && window == window->RootNonPopupWindow && (!(window->Flags & ImGuiWindowFlags_NoNavFocus) || window == g.NavWindow);
+}
+
float ImGui::GetWindowWidth()
{
ImGuiWindow* window = GImGui->CurrentWindow;
diff --git a/imgui_internal.h b/imgui_internal.h
index 23e6cfc..a44eba4 100644
--- a/imgui_internal.h
+++ b/imgui_internal.h
@@ -1001,6 +1001,7 @@
IMGUI_API void BringWindowToFront(ImGuiWindow* window);
IMGUI_API void BringWindowToBack(ImGuiWindow* window);
IMGUI_API bool IsWindowChildOf(ImGuiWindow* window, ImGuiWindow* potential_parent);
+ IMGUI_API bool IsWindowNavFocusable(ImGuiWindow* window);
IMGUI_API void Initialize();