Nav: Added NavMoveResultParentId internal info to record when the parent/context of a given NavId. Useful for various algorithms (currently looking at range selection stuff) (#787)

This commit is contained in:
omar 2017-10-03 13:25:40 -07:00
parent 74da533c93
commit 64a51327d3
2 changed files with 4 additions and 0 deletions

View File

@ -2220,6 +2220,7 @@ bool ImGui::ItemAdd(const ImRect& bb, const ImGuiID* id, const ImRect* nav_bb_ar
if (new_best)
{
g.NavMoveResultId = *id;
g.NavMoveResultParentId = window->IDStack.back();
g.NavMoveResultRectRel = nav_bb_rel;
}
@ -2856,6 +2857,7 @@ static void NavUpdate()
// Reset search
g.NavMoveResultId = 0;
g.NavMoveResultParentId = 0;
g.NavMoveResultDistAxial = g.NavMoveResultDistBox = g.NavMoveResultDistCenter = FLT_MAX;
// When we have manually scrolled (without using navigation) and NavId becomes out of bounds, we clamp its bounding box (used for search) to the visible area to restart navigation within visible items

View File

@ -480,6 +480,7 @@ struct ImGuiContext
ImGuiDir NavMoveDir; // West/East/North/South
ImGuiDir NavMoveDirLast; //
ImGuiID NavMoveResultId; // Best move request candidate
ImGuiID NavMoveResultParentId; //
float NavMoveResultDistBox; // Best move request candidate box distance to current NavId
float NavMoveResultDistCenter; // Best move request candidate center distance to current NavId
float NavMoveResultDistAxial;
@ -590,6 +591,7 @@ struct ImGuiContext
NavMoveRequestForwardStep = 0;
NavMoveDir = NavMoveDirLast = ImGuiDir_None;
NavMoveResultId = 0;
NavMoveResultParentId = 0;
NavMoveResultDistBox = NavMoveResultDistCenter = NavMoveResultDistAxial = 0.0f;
SetNextWindowPosVal = ImVec2(0.0f, 0.0f);