Nav: Disabled clipping g.NavId and fixed interactions with ImGuiListClipper. (#787)
diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt
index 8d8ea0b..adc5fac 100644
--- a/docs/CHANGELOG.txt
+++ b/docs/CHANGELOG.txt
@@ -49,6 +49,9 @@
 - Selectable: Allow using ImGuiSelectableFlags_SpanAllColumns in other columns than first. (#125)
 - TreeNode: Made clicking on arrow with _OpenOnArrow toggle the open state on the Mouse Down
   event rather than the Mouse Down+Up sequence (this is rather standard behavior).
+- Nav: Fixed interactions with ImGuiListClipper, so e.g. Home/End result would not clip the
+  landing item on the landing frame. (#787)
+- Nav: Fixed currently focused item from ever being clipped by ItemAdd(). (#787)
 - Scrolling: Fixed scrolling centering API leading to non-integer scrolling values and initial
   cursor position. This would often get fixed after the fix item submission, but using the
   ImGuiListClipper as the first thing after Begin() could largely break size calculations. (#3073)
diff --git a/imgui.cpp b/imgui.cpp
index 984c667..2d3f316 100644
--- a/imgui.cpp
+++ b/imgui.cpp
@@ -2227,6 +2227,8 @@
     ImRect unclipped_rect = window->ClipRect;
     if (g.NavMoveRequest)
         unclipped_rect.Add(g.NavScoringRect);
+    if (g.NavJustMovedToId && window->NavLastIds[0] == g.NavJustMovedToId)
+        unclipped_rect.Add(ImRect(window->Pos + window->NavRectRel[0].Min, window->Pos + window->NavRectRel[0].Max));
 
     const ImVec2 pos = window->DC.CursorPos;
     int start = (int)((unclipped_rect.Min.y - pos.y) / items_height);
@@ -3142,7 +3144,7 @@
     ImGuiContext& g = *GImGui;
     ImGuiWindow* window = g.CurrentWindow;
     if (!bb.Overlaps(window->ClipRect))
-        if (id == 0 || id != g.ActiveId)
+        if (id == 0 || (id != g.ActiveId && id != g.NavId))
             if (clip_even_when_logged || !g.LogEnabled)
                 return true;
     return false;