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();