diff --git a/imgui.cpp b/imgui.cpp index 711b9ab5..112ce24e 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -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 diff --git a/imgui_internal.h b/imgui_internal.h index 8c3a1764..3798e7fa 100644 --- a/imgui_internal.h +++ b/imgui_internal.h @@ -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);