Clipper: simplify code and remove cases where true is returned with empty display range as an extra step.
diff --git a/imgui.cpp b/imgui.cpp
index bbc35ba..46f0c0c 100644
--- a/imgui.cpp
+++ b/imgui.cpp
@@ -2669,10 +2669,9 @@
     if (data->StepNo == 0 && table != NULL && !table->IsUnfrozenRows)
     {
         clipper->DisplayStart = data->ItemsFrozen;
-        clipper->DisplayEnd = data->ItemsFrozen + 1;
-        if (clipper->DisplayStart >= clipper->ItemsCount)
-            return false;
-        data->ItemsFrozen++;
+        clipper->DisplayEnd = ImMin(data->ItemsFrozen + 1, clipper->ItemsCount);
+        if (clipper->DisplayStart < clipper->DisplayEnd)
+            data->ItemsFrozen++;
         return true;
     }
 
@@ -2687,8 +2686,6 @@
             data->Ranges.push_front(ImGuiListClipperRange::FromIndices(data->ItemsFrozen, data->ItemsFrozen + 1));
             clipper->DisplayStart = ImMax(data->Ranges[0].Min, data->ItemsFrozen);
             clipper->DisplayEnd = ImMin(data->Ranges[0].Max, clipper->ItemsCount);
-            if (clipper->DisplayStart == clipper->DisplayEnd)
-                return false;
             data->StepNo = 1;
             return true;
         }
@@ -2778,9 +2775,10 @@
 bool ImGuiListClipper::Step()
 {
     ImGuiContext& g = *GImGui;
-    ImGuiWindow* window = g.CurrentWindow;
     bool need_items_height = (ItemsHeight <= 0.0f);
     bool ret = ImGuiListClipper_StepInternal(this);
+    if (ret && (DisplayStart == DisplayEnd))
+        ret = false;
     if (g.CurrentTable && g.CurrentTable->IsUnfrozenRows == false)
         IMGUI_DEBUG_LOG_CLIPPER("Clipper: Step(): inside frozen table row.\n");
     if (need_items_height && ItemsHeight > 0.0f)