mirror of
https://github.com/Drezil/imgui.git
synced 2025-07-04 12:08:47 +02:00
Nav: Menus and popups now have move request wrap around vertically (using the move request forward thing added recently). (#787)
This commit is contained in:
19
imgui.cpp
19
imgui.cpp
@ -4476,11 +4476,28 @@ bool ImGui::BeginPopupModal(const char* name, bool* p_open, ImGuiWindowFlags ext
|
||||
return is_open;
|
||||
}
|
||||
|
||||
static void NavProcessMoveRequestWrapAround(ImGuiWindow* window)
|
||||
{
|
||||
ImGuiContext& g = *GImGui;
|
||||
if (g.NavMoveRequest && g.NavWindow == window && g.NavMoveResultId == 0)
|
||||
if ((g.NavMoveDir == ImGuiDir_Up || g.NavMoveDir == ImGuiDir_Down) && g.NavMoveRequestForwardStep == 0 && g.NavLayer == 0)
|
||||
{
|
||||
g.NavMoveRequest = false;
|
||||
g.NavMoveRequestForwardStep = 1;
|
||||
g.NavWindow->NavRectRel[0].Min.y = g.NavWindow->NavRectRel[0].Max.y = (g.NavMoveDir == ImGuiDir_Up) ? window->SizeFull.y : 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void ImGui::EndPopup()
|
||||
{
|
||||
ImGuiContext& g = *GImGui;
|
||||
ImGuiWindow* window = GetCurrentWindow();
|
||||
IM_ASSERT(window->Flags & ImGuiWindowFlags_Popup); // Mismatched BeginPopup()/EndPopup() calls
|
||||
IM_ASSERT(GImGui->CurrentPopupStack.Size > 0);
|
||||
IM_ASSERT(g.CurrentPopupStack.Size > 0);
|
||||
|
||||
// Make all menus and popups wrap around for now, may need to expose that policy.
|
||||
NavProcessMoveRequestWrapAround(window);
|
||||
|
||||
End();
|
||||
if (!(window->Flags & ImGuiWindowFlags_Modal))
|
||||
PopStyleVar();
|
||||
|
Reference in New Issue
Block a user