mirror of
https://github.com/ocornut/imgui.git
synced 2026-01-11 00:04:24 +00:00
Nav: fixed a bug where GamepadMenu couldn't toggle between main and menu layer while navigating a Modal window. (#8834)
Amend 901d432cb but for Gamepad.
This commit is contained in:
parent
22fe9fce4c
commit
7d5fef8642
3 changed files with 12 additions and 4 deletions
|
|
@ -70,6 +70,8 @@ Other Changes:
|
||||||
any potential shrinking is applied.
|
any potential shrinking is applied.
|
||||||
- Tabs: fixed tab bar underline not drawing below scroll buttons, when
|
- Tabs: fixed tab bar underline not drawing below scroll buttons, when
|
||||||
they are enabled (minor regression from 1.90). (#6820, #4859, #5022, #5239)
|
they are enabled (minor regression from 1.90). (#6820, #4859, #5022, #5239)
|
||||||
|
- Nav: fixed a bug where GamepadMenu button couldn't toggle between main and
|
||||||
|
menu layers while navigating a Modal window. (#8834)
|
||||||
- Error Handling: minor improvements to error handling for TableGetSortSpecs()
|
- Error Handling: minor improvements to error handling for TableGetSortSpecs()
|
||||||
and TableSetBgColor() calls. (#1651, #8499)
|
and TableSetBgColor() calls. (#1651, #8499)
|
||||||
- Misc: fixed building with IMGUI_DISABLE_DEBUG_TOOLS only. (#8796)
|
- Misc: fixed building with IMGUI_DISABLE_DEBUG_TOOLS only. (#8796)
|
||||||
|
|
|
||||||
10
imgui.cpp
10
imgui.cpp
|
|
@ -14200,9 +14200,16 @@ static void ImGui::NavUpdateWindowing()
|
||||||
const bool nav_keyboard_active = (io.ConfigFlags & ImGuiConfigFlags_NavEnableKeyboard) != 0;
|
const bool nav_keyboard_active = (io.ConfigFlags & ImGuiConfigFlags_NavEnableKeyboard) != 0;
|
||||||
const bool keyboard_next_window = allow_windowing && g.ConfigNavWindowingKeyNext && Shortcut(g.ConfigNavWindowingKeyNext, ImGuiInputFlags_Repeat | ImGuiInputFlags_RouteAlways, owner_id);
|
const bool keyboard_next_window = allow_windowing && g.ConfigNavWindowingKeyNext && Shortcut(g.ConfigNavWindowingKeyNext, ImGuiInputFlags_Repeat | ImGuiInputFlags_RouteAlways, owner_id);
|
||||||
const bool keyboard_prev_window = allow_windowing && g.ConfigNavWindowingKeyPrev && Shortcut(g.ConfigNavWindowingKeyPrev, ImGuiInputFlags_Repeat | ImGuiInputFlags_RouteAlways, owner_id);
|
const bool keyboard_prev_window = allow_windowing && g.ConfigNavWindowingKeyPrev && Shortcut(g.ConfigNavWindowingKeyPrev, ImGuiInputFlags_Repeat | ImGuiInputFlags_RouteAlways, owner_id);
|
||||||
const bool start_windowing_with_gamepad = allow_windowing && nav_gamepad_active && !g.NavWindowingTarget && Shortcut(ImGuiKey_NavGamepadMenu, ImGuiInputFlags_RouteAlways, owner_id);
|
const bool start_toggling_with_gamepad = nav_gamepad_active && !g.NavWindowingTarget && Shortcut(ImGuiKey_NavGamepadMenu, ImGuiInputFlags_RouteAlways, owner_id);
|
||||||
|
const bool start_windowing_with_gamepad = allow_windowing && start_toggling_with_gamepad;
|
||||||
const bool start_windowing_with_keyboard = allow_windowing && !g.NavWindowingTarget && (keyboard_next_window || keyboard_prev_window); // Note: enabled even without NavEnableKeyboard!
|
const bool start_windowing_with_keyboard = allow_windowing && !g.NavWindowingTarget && (keyboard_next_window || keyboard_prev_window); // Note: enabled even without NavEnableKeyboard!
|
||||||
bool just_started_windowing_from_null_focus = false;
|
bool just_started_windowing_from_null_focus = false;
|
||||||
|
if (start_toggling_with_gamepad)
|
||||||
|
{
|
||||||
|
g.NavWindowingToggleLayer = true; // Gamepad starts toggling layer
|
||||||
|
g.NavWindowingToggleKey = ImGuiKey_NavGamepadMenu;
|
||||||
|
g.NavWindowingInputSource = g.NavInputSource = ImGuiInputSource_Gamepad;
|
||||||
|
}
|
||||||
if (start_windowing_with_gamepad || start_windowing_with_keyboard)
|
if (start_windowing_with_gamepad || start_windowing_with_keyboard)
|
||||||
if (ImGuiWindow* window = g.NavWindow ? g.NavWindow : FindWindowNavFocusable(g.WindowsFocusOrder.Size - 1, -INT_MAX, -1))
|
if (ImGuiWindow* window = g.NavWindow ? g.NavWindow : FindWindowNavFocusable(g.WindowsFocusOrder.Size - 1, -INT_MAX, -1))
|
||||||
{
|
{
|
||||||
|
|
@ -14210,7 +14217,6 @@ static void ImGui::NavUpdateWindowing()
|
||||||
g.NavWindowingTarget = g.NavWindowingTargetAnim = window->RootWindow; // Current location
|
g.NavWindowingTarget = g.NavWindowingTargetAnim = window->RootWindow; // Current location
|
||||||
g.NavWindowingTimer = g.NavWindowingHighlightAlpha = 0.0f;
|
g.NavWindowingTimer = g.NavWindowingHighlightAlpha = 0.0f;
|
||||||
g.NavWindowingAccumDeltaPos = g.NavWindowingAccumDeltaSize = ImVec2(0.0f, 0.0f);
|
g.NavWindowingAccumDeltaPos = g.NavWindowingAccumDeltaSize = ImVec2(0.0f, 0.0f);
|
||||||
g.NavWindowingToggleLayer = start_windowing_with_gamepad ? true : false; // Gamepad starts toggling layer
|
|
||||||
g.NavWindowingInputSource = g.NavInputSource = start_windowing_with_keyboard ? ImGuiInputSource_Keyboard : ImGuiInputSource_Gamepad;
|
g.NavWindowingInputSource = g.NavInputSource = start_windowing_with_keyboard ? ImGuiInputSource_Keyboard : ImGuiInputSource_Gamepad;
|
||||||
if (g.NavWindow == NULL)
|
if (g.NavWindow == NULL)
|
||||||
just_started_windowing_from_null_focus = true;
|
just_started_windowing_from_null_focus = true;
|
||||||
|
|
|
||||||
|
|
@ -2328,8 +2328,8 @@ struct ImGuiContext
|
||||||
float NavWindowingTimer;
|
float NavWindowingTimer;
|
||||||
float NavWindowingHighlightAlpha;
|
float NavWindowingHighlightAlpha;
|
||||||
ImGuiInputSource NavWindowingInputSource;
|
ImGuiInputSource NavWindowingInputSource;
|
||||||
bool NavWindowingToggleLayer;
|
bool NavWindowingToggleLayer; // Set while Alt or GamepadMenu is held, may be cleared by other operations, and processed when releasing the key.
|
||||||
ImGuiKey NavWindowingToggleKey;
|
ImGuiKey NavWindowingToggleKey; // Keyboard/gamepad key used when toggling to menu layer.
|
||||||
ImVec2 NavWindowingAccumDeltaPos;
|
ImVec2 NavWindowingAccumDeltaPos;
|
||||||
ImVec2 NavWindowingAccumDeltaSize;
|
ImVec2 NavWindowingAccumDeltaSize;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue