2
0
Эх сурвалжийг харах

Nav: SetItemDefaultFocus() doesn't make the navigation cursorr highlight visible. Renamed NavInitResultExplicit to NavInitRequestFromMove. (#787)

omar 7 жил өмнө
parent
commit
0c0d811859
3 өөрчлөгдсөн 8 нэмэгдсэн , 8 устгасан
  1. 1 0
      TODO.txt
  2. 5 6
      imgui.cpp
  3. 2 2
      imgui_internal.h

+ 1 - 0
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.

+ 5 - 6
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();

+ 2 - 2
imgui_internal.h

@@ -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;