mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
Nav: SetItemDefaultFocus() doesn't make the navigation cursorr highlight visible. Renamed NavInitResultExplicit to NavInitRequestFromMove. (#787)
This commit is contained in:
parent
4b49f03a40
commit
0c0d811859
1
TODO.txt
1
TODO.txt
@ -231,6 +231,7 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i
|
|||||||
- font: (api breaking) removed "TTF" from symbol names. also because it now supports OTF.
|
- font: (api breaking) removed "TTF" from symbol names. also because it now supports OTF.
|
||||||
|
|
||||||
- nav: integrate navigation branch into master. (#787)
|
- nav: integrate navigation branch into master. (#787)
|
||||||
|
- nav: allow input system to be be more tolerant of io.DeltaTime=0.0f
|
||||||
- nav: Left within a tree node block as a fallback.
|
- nav: Left within a tree node block as a fallback.
|
||||||
- nav: Esc on a flattened child
|
- nav: Esc on a flattened child
|
||||||
- nav: menus: allow pressing Menu to leave a sub-menu.
|
- nav: menus: allow pressing Menu to leave a sub-menu.
|
||||||
|
11
imgui.cpp
11
imgui.cpp
@ -2656,8 +2656,8 @@ void ImGui::NavInitWindow(ImGuiWindow* window, bool force_reinit)
|
|||||||
{
|
{
|
||||||
SetNavID(0, g.NavLayer);
|
SetNavID(0, g.NavLayer);
|
||||||
g.NavInitRequest = true;
|
g.NavInitRequest = true;
|
||||||
|
g.NavInitRequestFromMove = false;
|
||||||
g.NavInitResultId = 0;
|
g.NavInitResultId = 0;
|
||||||
g.NavInitResultExplicit = false;
|
|
||||||
g.NavInitResultRectRel = ImRect();
|
g.NavInitResultRectRel = ImRect();
|
||||||
NavUpdateAnyRequestFlag();
|
NavUpdateAnyRequestFlag();
|
||||||
}
|
}
|
||||||
@ -2929,18 +2929,18 @@ static void ImGui::NavUpdate()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Process navigation init request (select first/default focus)
|
// Process navigation init request (select first/default focus)
|
||||||
if (g.NavInitResultId != 0 && (!g.NavDisableHighlight || g.NavInitResultExplicit))
|
if (g.NavInitResultId != 0 && (!g.NavDisableHighlight || g.NavInitRequestFromMove))
|
||||||
{
|
{
|
||||||
// Apply result from previous navigation init request (will typically select the first item, unless SetItemDefaultFocus() has been called)
|
// Apply result from previous navigation init request (will typically select the first item, unless SetItemDefaultFocus() has been called)
|
||||||
IM_ASSERT(g.NavWindow);
|
IM_ASSERT(g.NavWindow);
|
||||||
if (g.NavInitResultExplicit)
|
if (g.NavInitRequestFromMove)
|
||||||
SetNavIDAndMoveMouse(g.NavInitResultId, g.NavLayer, g.NavInitResultRectRel);
|
SetNavIDAndMoveMouse(g.NavInitResultId, g.NavLayer, g.NavInitResultRectRel);
|
||||||
else
|
else
|
||||||
SetNavID(g.NavInitResultId, g.NavLayer);
|
SetNavID(g.NavInitResultId, g.NavLayer);
|
||||||
g.NavWindow->NavRectRel[g.NavLayer] = g.NavInitResultRectRel;
|
g.NavWindow->NavRectRel[g.NavLayer] = g.NavInitResultRectRel;
|
||||||
}
|
}
|
||||||
g.NavInitRequest = false;
|
g.NavInitRequest = false;
|
||||||
g.NavInitResultExplicit = false;
|
g.NavInitRequestFromMove = false;
|
||||||
g.NavInitResultId = 0;
|
g.NavInitResultId = 0;
|
||||||
g.NavJustMovedToId = 0;
|
g.NavJustMovedToId = 0;
|
||||||
|
|
||||||
@ -3098,7 +3098,7 @@ static void ImGui::NavUpdate()
|
|||||||
// If we initiate a movement request and have no current NavId, we initiate a InitDefautRequest that will be used as a fallback if the direction fails to find a match
|
// If we initiate a movement request and have no current NavId, we initiate a InitDefautRequest that will be used as a fallback if the direction fails to find a match
|
||||||
if (g.NavMoveRequest && g.NavId == 0)
|
if (g.NavMoveRequest && g.NavId == 0)
|
||||||
{
|
{
|
||||||
g.NavInitRequest = g.NavInitResultExplicit = true;
|
g.NavInitRequest = g.NavInitRequestFromMove = true;
|
||||||
g.NavInitResultId = 0;
|
g.NavInitResultId = 0;
|
||||||
g.NavDisableHighlight = false;
|
g.NavDisableHighlight = false;
|
||||||
}
|
}
|
||||||
@ -7147,7 +7147,6 @@ void ImGui::SetItemDefaultFocus()
|
|||||||
if (g.NavWindow == window->NavRootWindow && (g.NavInitRequest || g.NavInitResultId != 0) && g.NavLayer == g.NavWindow->DC.NavLayerCurrent)
|
if (g.NavWindow == window->NavRootWindow && (g.NavInitRequest || g.NavInitResultId != 0) && g.NavLayer == g.NavWindow->DC.NavLayerCurrent)
|
||||||
{
|
{
|
||||||
g.NavInitRequest = false;
|
g.NavInitRequest = false;
|
||||||
g.NavInitResultExplicit = true;
|
|
||||||
g.NavInitResultId = g.NavWindow->DC.LastItemId;
|
g.NavInitResultId = g.NavWindow->DC.LastItemId;
|
||||||
g.NavInitResultRectRel = ImRect(g.NavWindow->DC.LastItemRect.Min - g.NavWindow->Pos, g.NavWindow->DC.LastItemRect.Max - g.NavWindow->Pos);
|
g.NavInitResultRectRel = ImRect(g.NavWindow->DC.LastItemRect.Min - g.NavWindow->Pos, g.NavWindow->DC.LastItemRect.Max - g.NavWindow->Pos);
|
||||||
NavUpdateAnyRequestFlag();
|
NavUpdateAnyRequestFlag();
|
||||||
|
@ -630,9 +630,9 @@ struct ImGuiContext
|
|||||||
bool NavDisableMouseHover; // When user starts using gamepad/keyboard, we hide mouse hovering highlight until mouse is touched again.
|
bool NavDisableMouseHover; // When user starts using gamepad/keyboard, we hide mouse hovering highlight until mouse is touched again.
|
||||||
bool NavAnyRequest; // ~~ NavMoveRequest || NavInitRequest
|
bool NavAnyRequest; // ~~ NavMoveRequest || NavInitRequest
|
||||||
bool NavInitRequest; // Init request for appearing window to select first item
|
bool NavInitRequest; // Init request for appearing window to select first item
|
||||||
|
bool NavInitRequestFromMove;
|
||||||
ImGuiID NavInitResultId;
|
ImGuiID NavInitResultId;
|
||||||
ImRect NavInitResultRectRel;
|
ImRect NavInitResultRectRel;
|
||||||
bool NavInitResultExplicit; // Whether the result was explicitly requested with SetItemDefaultFocus()
|
|
||||||
bool NavMoveFromClampedRefRect; // Set by manual scrolling, if we scroll to a point where NavId isn't visible we reset navigation from visible items
|
bool NavMoveFromClampedRefRect; // Set by manual scrolling, if we scroll to a point where NavId isn't visible we reset navigation from visible items
|
||||||
bool NavMoveRequest; // Move request for this frame
|
bool NavMoveRequest; // Move request for this frame
|
||||||
ImGuiNavForward NavMoveRequestForward; // None / ForwardQueued / ForwardActive (this is used to navigate sibling parent menus from a child menu)
|
ImGuiNavForward NavMoveRequestForward; // None / ForwardQueued / ForwardActive (this is used to navigate sibling parent menus from a child menu)
|
||||||
@ -747,8 +747,8 @@ struct ImGuiContext
|
|||||||
NavDisableMouseHover = false;
|
NavDisableMouseHover = false;
|
||||||
NavAnyRequest = false;
|
NavAnyRequest = false;
|
||||||
NavInitRequest = false;
|
NavInitRequest = false;
|
||||||
|
NavInitRequestFromMove = false;
|
||||||
NavInitResultId = 0;
|
NavInitResultId = 0;
|
||||||
NavInitResultExplicit = false;
|
|
||||||
NavMoveFromClampedRefRect = false;
|
NavMoveFromClampedRefRect = false;
|
||||||
NavMoveRequest = false;
|
NavMoveRequest = false;
|
||||||
NavMoveRequestForward = ImGuiNavForward_None;
|
NavMoveRequestForward = ImGuiNavForward_None;
|
||||||
|
Loading…
Reference in New Issue
Block a user