ImGuiFullscreen: Fix position resetting to top of list on popup close

This commit is contained in:
Stenzek 2024-11-16 19:36:12 +10:00
parent 5cfb76e3f5
commit 854319441c
No known key found for this signature in database

View File

@ -639,8 +639,6 @@ bool ImGuiFullscreen::ResetFocusHere()
if (ImGui::FindBlockingModal(window))
return false;
s_focus_reset_queued = FocusResetType::None;
// Set the flag that we drew an active/hovered item active for a frame, because otherwise there's one frame where
// there'll be no frame drawn, which will cancel the animation. Also set the appearing flag, so that the default
// focus set does actually go through.
@ -651,7 +649,12 @@ bool ImGuiFullscreen::ResetFocusHere()
}
ImGui::SetWindowFocus();
ImGui::NavInitWindow(window, true);
// If this is a popup closing, we don't want to reset the current nav item, since we were presumably opened by one.
if (s_focus_reset_queued != FocusResetType::PopupClosed)
ImGui::NavInitWindow(window, true);
s_focus_reset_queued = FocusResetType::None;
// only do the active selection magic when we're using keyboard/gamepad
return (GImGui->NavInputSource == ImGuiInputSource_Keyboard || GImGui->NavInputSource == ImGuiInputSource_Gamepad);