From 77637fd9363ac7ef7b6fb6419b760602192a38bd Mon Sep 17 00:00:00 2001 From: ocornut Date: Tue, 12 Jul 2022 10:51:14 +0200 Subject: [PATCH] Docking, Nav: Fixed using gamepad/keyboard navigation not being able enter menu layer (#5463, #4792) Fix 37958ca --- docs/CHANGELOG.txt | 2 ++ imgui.cpp | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index bd4af514f..a4ccf34fd 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -133,6 +133,8 @@ Other Changes: Docking+Viewports Branch: +- Docking, Nav: Fixed using gamepad/keyboard navigation not being able enter menu layer when + it only contained the standard Collapse/Close buttons and no actual menu. (#5463, #4792) - Backends: GLFW: Fixed leftover static variable preventing from changing or reinitializing backend while application is running. (#4616, #5434) [@rtoumazet] diff --git a/imgui.cpp b/imgui.cpp index 7c1639b0b..2c691f675 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -7061,6 +7061,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) window->DC.NavLayerCurrent = ImGuiNavLayer_Main; window->DC.NavLayersActiveMask = window->DC.NavLayersActiveMaskNext; + window->DC.NavLayersActiveMaskNext = 0x00; window->DC.NavHideHighlightOneFrame = false; window->DC.NavHasScroll = (window->ScrollMax.y > 0.0f); @@ -7221,9 +7222,9 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) skip_items = true; window->SkipItems = skip_items; - // Only clear NavLayersActiveMaskNext when marked as visible, so a CTRL+Tab back can use a safe value. - if (!window->SkipItems) - window->DC.NavLayersActiveMaskNext = 0x00; + // Restore NavLayersActiveMaskNext to previous value when not visible, so a CTRL+Tab back can use a safe value. + if (window->SkipItems) + window->DC.NavLayersActiveMaskNext = window->DC.NavLayersActiveMask; // Sanity check: there are two spots which can set Appearing = true // - when 'window_just_activated_by_user' is set -> HiddenFramesCannotSkipItems is set -> SkipItems always false