Nav: Fixed single frame CTRL+Tab from properly enabling the menu layer of target window if it doesn't have other active layers.

This commit is contained in:
ocornut 2021-05-21 18:39:17 +02:00
parent 5d77b6f274
commit b474bff6c6
2 changed files with 9 additions and 2 deletions

View File

@ -55,6 +55,8 @@ Other Changes:
- Nav, InputText: Fixed accidental menu toggling while typing non-ascii characters using AltGR. [@rokups] (#370) - Nav, InputText: Fixed accidental menu toggling while typing non-ascii characters using AltGR. [@rokups] (#370)
- Nav: Fixed using SetItemDefaultFocus() on windows with _NavFlattened flag. (#787) - Nav: Fixed using SetItemDefaultFocus() on windows with _NavFlattened flag. (#787)
- Nav: Fixed Tabbing initial activation from skipping the first item if it is tabbable through. (#787) - Nav: Fixed Tabbing initial activation from skipping the first item if it is tabbable through. (#787)
- Nav: Fixed fast CTRL+Tab (where keys are only held for one single frame) from properly enabling the
menu layer of target window if it doesn't have other active layers.
- Tables: Expose TableSetColumnEnabled() in public api. (#3935) - Tables: Expose TableSetColumnEnabled() in public api. (#3935)
- Tables: Better preserve widths when columns count changes. (#4046) - Tables: Better preserve widths when columns count changes. (#4046)
- Tables: Sharing more memory buffers between tables, reducing general memory footprints. (#3740) - Tables: Sharing more memory buffers between tables, reducing general memory footprints. (#3740)

View File

@ -9668,8 +9668,13 @@ static void ImGui::NavUpdateWindowing()
NavInitWindow(apply_focus_window, false); NavInitWindow(apply_focus_window, false);
// If the window has ONLY a menu layer (no main layer), select it directly // If the window has ONLY a menu layer (no main layer), select it directly
// FIXME-NAV: This should be done in NavInit.. or in FocusWindow.. // Use NavLayersActiveMaskNext since windows didn't have a chance to be Begin()-ed on this frame,
if (apply_focus_window->DC.NavLayersActiveMask == (1 << ImGuiNavLayer_Menu)) // so CTRL+Tab where the keys are only held for 1 frame will be able to use correct layers mask since
// the target window as already been previewed once.
// FIXME-NAV: This should be done in NavInit.. or in FocusWindow... However in both of those cases,
// we won't have a guarantee that windows has been visible before and therefore NavLayersActiveMask*
// won't be valid.
if (apply_focus_window->DC.NavLayersActiveMaskNext == (1 << ImGuiNavLayer_Menu))
g.NavLayer = ImGuiNavLayer_Menu; g.NavLayer = ImGuiNavLayer_Menu;
} }
if (apply_focus_window) if (apply_focus_window)