|
@@ -2896,12 +2896,12 @@ static void ImGui::NavUpdate()
|
|
}
|
|
}
|
|
|
|
|
|
// When a forwarded move request failed, we restore the highlight that we disabled during the forward frame
|
|
// When a forwarded move request failed, we restore the highlight that we disabled during the forward frame
|
|
- if (g.NavMoveRequestForwardStep == 2)
|
|
|
|
|
|
+ if (g.NavMoveRequestForward == ImGuiNavForward_ForwardResult)
|
|
{
|
|
{
|
|
IM_ASSERT(g.NavMoveRequest);
|
|
IM_ASSERT(g.NavMoveRequest);
|
|
if (g.NavMoveResultId == 0)
|
|
if (g.NavMoveResultId == 0)
|
|
g.NavDisableHighlight = false;
|
|
g.NavDisableHighlight = false;
|
|
- g.NavMoveRequestForwardStep = 0;
|
|
|
|
|
|
+ g.NavMoveRequestForward = ImGuiNavForward_None;
|
|
}
|
|
}
|
|
|
|
|
|
// Apply application mouse position movement, after we had a chance to process move request result.
|
|
// Apply application mouse position movement, after we had a chance to process move request result.
|
|
@@ -2993,7 +2993,7 @@ static void ImGui::NavUpdate()
|
|
|
|
|
|
// Initiate directional inputs request
|
|
// Initiate directional inputs request
|
|
const int allowed_dir_flags = (g.ActiveId == 0) ? ~0 : g.ActiveIdAllowNavDirFlags;
|
|
const int allowed_dir_flags = (g.ActiveId == 0) ? ~0 : g.ActiveIdAllowNavDirFlags;
|
|
- if (g.NavMoveRequestForwardStep == 0)
|
|
|
|
|
|
+ if (g.NavMoveRequestForward == ImGuiNavForward_None)
|
|
{
|
|
{
|
|
g.NavMoveDir = ImGuiDir_None;
|
|
g.NavMoveDir = ImGuiDir_None;
|
|
if (g.NavWindow && !g.NavWindowingTarget && allowed_dir_flags && !(g.NavWindow->Flags & ImGuiWindowFlags_NoNavInputs))
|
|
if (g.NavWindow && !g.NavWindowingTarget && allowed_dir_flags && !(g.NavWindow->Flags & ImGuiWindowFlags_NoNavInputs))
|
|
@@ -3006,9 +3006,10 @@ static void ImGui::NavUpdate()
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
|
|
+ // Forwarding previous request (which has been modified, e.g. wrap around menus rewrite the requests with a starting rectangle at the other side of the window)
|
|
IM_ASSERT(g.NavMoveDir != ImGuiDir_None);
|
|
IM_ASSERT(g.NavMoveDir != ImGuiDir_None);
|
|
- IM_ASSERT(g.NavMoveRequestForwardStep == 1);
|
|
|
|
- g.NavMoveRequestForwardStep = 2;
|
|
|
|
|
|
+ IM_ASSERT(g.NavMoveRequestForward == ImGuiNavForward_Forwarding);
|
|
|
|
+ g.NavMoveRequestForward = ImGuiNavForward_ForwardResult;
|
|
}
|
|
}
|
|
|
|
|
|
if (g.NavMoveDir != ImGuiDir_None)
|
|
if (g.NavMoveDir != ImGuiDir_None)
|
|
@@ -4821,9 +4822,9 @@ static void NavProcessMoveRequestWrapAround(ImGuiWindow* window)
|
|
{
|
|
{
|
|
ImGuiContext& g = *GImGui;
|
|
ImGuiContext& g = *GImGui;
|
|
if (g.NavMoveRequest && g.NavWindow == window && g.NavMoveResultId == 0)
|
|
if (g.NavMoveRequest && g.NavWindow == window && g.NavMoveResultId == 0)
|
|
- if ((g.NavMoveDir == ImGuiDir_Up || g.NavMoveDir == ImGuiDir_Down) && g.NavMoveRequestForwardStep == 0 && g.NavLayer == 0)
|
|
|
|
|
|
+ if ((g.NavMoveDir == ImGuiDir_Up || g.NavMoveDir == ImGuiDir_Down) && g.NavMoveRequestForward == ImGuiNavForward_None && g.NavLayer == 0)
|
|
{
|
|
{
|
|
- g.NavMoveRequestForwardStep = 1;
|
|
|
|
|
|
+ g.NavMoveRequestForward = ImGuiNavForward_Forwarding;
|
|
NavMoveRequestCancel();
|
|
NavMoveRequestCancel();
|
|
g.NavWindow->NavRectRel[0].Min.y = g.NavWindow->NavRectRel[0].Max.y = ((g.NavMoveDir == ImGuiDir_Up) ? ImMax(window->SizeFull.y, window->SizeContents.y) : 0.0f) - window->Scroll.y;
|
|
g.NavWindow->NavRectRel[0].Min.y = g.NavWindow->NavRectRel[0].Max.y = ((g.NavMoveDir == ImGuiDir_Up) ? ImMax(window->SizeFull.y, window->SizeContents.y) : 0.0f) - window->Scroll.y;
|
|
}
|
|
}
|
|
@@ -10860,7 +10861,7 @@ void ImGui::EndMenuBar()
|
|
ImGuiWindow* nav_earliest_child = g.NavWindow;
|
|
ImGuiWindow* nav_earliest_child = g.NavWindow;
|
|
while (nav_earliest_child->ParentWindow && (nav_earliest_child->ParentWindow->Flags & ImGuiWindowFlags_ChildMenu))
|
|
while (nav_earliest_child->ParentWindow && (nav_earliest_child->ParentWindow->Flags & ImGuiWindowFlags_ChildMenu))
|
|
nav_earliest_child = nav_earliest_child->ParentWindow;
|
|
nav_earliest_child = nav_earliest_child->ParentWindow;
|
|
- if (nav_earliest_child->ParentWindow == window && nav_earliest_child->DC.ParentLayoutType == ImGuiLayoutType_Horizontal && g.NavMoveRequestForwardStep == 0)
|
|
|
|
|
|
+ if (nav_earliest_child->ParentWindow == window && nav_earliest_child->DC.ParentLayoutType == ImGuiLayoutType_Horizontal && g.NavMoveRequestForward == ImGuiNavForward_None)
|
|
{
|
|
{
|
|
// To do so we claim focus back, restore NavId and then process the movement request for yet another frame.
|
|
// To do so we claim focus back, restore NavId and then process the movement request for yet another frame.
|
|
// This involve a one-frame delay which isn't very problematic in this situation. We could remove it by scoring in advance for multiple window (probably not worth the hassle/cost)
|
|
// This involve a one-frame delay which isn't very problematic in this situation. We could remove it by scoring in advance for multiple window (probably not worth the hassle/cost)
|
|
@@ -10869,7 +10870,7 @@ void ImGui::EndMenuBar()
|
|
SetNavIDAndMoveMouse(window->NavLastIds[1], 1, window->NavRectRel[1]);
|
|
SetNavIDAndMoveMouse(window->NavLastIds[1], 1, window->NavRectRel[1]);
|
|
g.NavLayer = 1;
|
|
g.NavLayer = 1;
|
|
g.NavDisableHighlight = true; // Hide highlight for the current frame so we don't see the intermediary selection.
|
|
g.NavDisableHighlight = true; // Hide highlight for the current frame so we don't see the intermediary selection.
|
|
- g.NavMoveRequestForwardStep = 1;
|
|
|
|
|
|
+ g.NavMoveRequestForward = ImGuiNavForward_Forwarding;
|
|
NavMoveRequestCancel();
|
|
NavMoveRequestCancel();
|
|
}
|
|
}
|
|
}
|
|
}
|