|
@@ -13182,9 +13182,11 @@ static void ImGui::NavUpdateWindowing()
|
|
|
|
|
|
// Keyboard: Press and Release ALT to toggle menu layer
|
|
|
const ImGuiKey windowing_toggle_keys[] = { ImGuiKey_LeftAlt, ImGuiKey_RightAlt };
|
|
|
+ bool windowing_toggle_layer_start = false;
|
|
|
for (ImGuiKey windowing_toggle_key : windowing_toggle_keys)
|
|
|
if (nav_keyboard_active && IsKeyPressed(windowing_toggle_key, 0, ImGuiKeyOwner_NoOwner))
|
|
|
{
|
|
|
+ windowing_toggle_layer_start = true;
|
|
|
g.NavWindowingToggleLayer = true;
|
|
|
g.NavWindowingToggleKey = windowing_toggle_key;
|
|
|
g.NavInputSource = ImGuiInputSource_Keyboard;
|
|
@@ -13198,7 +13200,9 @@ static void ImGui::NavUpdateWindowing()
|
|
|
// We cancel toggling nav layer if an owner has claimed the key.
|
|
|
if (io.InputQueueCharacters.Size > 0 || io.KeyCtrl || io.KeyShift || io.KeySuper)
|
|
|
g.NavWindowingToggleLayer = false;
|
|
|
- if (TestKeyOwner(g.NavWindowingToggleKey, ImGuiKeyOwner_NoOwner) == false || TestKeyOwner(ImGuiMod_Alt, ImGuiKeyOwner_NoOwner) == false)
|
|
|
+ else if (windowing_toggle_layer_start == false && g.LastKeyboardKeyPressTime == g.Time)
|
|
|
+ g.NavWindowingToggleLayer = false;
|
|
|
+ else if (TestKeyOwner(g.NavWindowingToggleKey, ImGuiKeyOwner_NoOwner) == false || TestKeyOwner(ImGuiMod_Alt, ImGuiKeyOwner_NoOwner) == false)
|
|
|
g.NavWindowingToggleLayer = false;
|
|
|
|
|
|
// Apply layer toggle on Alt release
|