Menus, Nav: made navigation into menu-bar auto wrap on X axis. (#9178)
diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt
index 63235b2..bd7715e 100644
--- a/docs/CHANGELOG.txt
+++ b/docs/CHANGELOG.txt
@@ -135,6 +135,7 @@
 - Menus:
   - Fixed MenuItem() label position and BeginMenu() arrow/icon/popup positions,
     when used inside a line with a baseline offset.
+  - Made navigation into menu-bar auto wrap on X axis. (#9178)
 - TreeNode:
   - Fixed highlight position when used inside a line with a large text baseline offset.
     (never quite worked in this situation; but then most of the time the text
diff --git a/imgui.cpp b/imgui.cpp
index 976216c..1f71151 100644
--- a/imgui.cpp
+++ b/imgui.cpp
@@ -13436,7 +13436,7 @@
 
     // In theory we should test for NavMoveRequestButNoResultYet() but there's no point doing it:
     // as NavEndFrame() will do the same test. It will end up calling NavUpdateCreateWrappingRequest().
-    if (g.NavWindow == window && g.NavMoveScoringItems && g.NavLayer == ImGuiNavLayer_Main)
+    if (g.NavWindow == window && g.NavMoveScoringItems && g.NavLayer == window->DC.NavLayerCurrent)
         g.NavMoveFlags = (g.NavMoveFlags & ~ImGuiNavMoveFlags_WrapMask_) | wrap_flags;
 }
 
diff --git a/imgui_widgets.cpp b/imgui_widgets.cpp
index 8faf35e..de19ecf 100644
--- a/imgui_widgets.cpp
+++ b/imgui_widgets.cpp
@@ -9070,6 +9070,10 @@
             NavMoveRequestForward(g.NavMoveDir, g.NavMoveClipDir, g.NavMoveFlags, g.NavMoveScrollFlags); // Repeat
         }
     }
+    else
+    {
+        NavMoveRequestTryWrapping(window, ImGuiNavMoveFlags_WrapX);
+    }
 
     PopClipRect();
     PopID();