diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index 481d0f773b2e..9116ef6746e5 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -80,6 +80,7 @@ Other Changes: - Drag and Drop: Fix drag and drop to tie same-size drop targets by choosen the later one. Fixes dragging into a full-window-sized dockspace inside a zero-padded window. (#3519, #2717) [@Black-Cat] - Checkbox: Added CheckboxFlags() helper with int* type. +- Clipper: Fixed incorrect end-list positioning when using ImGuiListClipper with 1 item (bug in 1.79). (#3663) [@nyorain] - InputText: Fixed updating cursor/selection position when a callback altered the buffer in a way where the byte count is unchanged but the decoded character count changes. (#3587) [@gqw] - InputText: Fixed swiching from single to multi-line while preserving same ID. diff --git a/imgui.cpp b/imgui.cpp index 322a5162352b..f2d5684545b6 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -2266,8 +2266,8 @@ bool ImGuiListClipper::Step() if (table && table->IsInsideRow) ImGui::TableEndRow(table); - // Reached end of list - if (DisplayEnd >= ItemsCount || GetSkipItemForListClipping()) + // No items + if (ItemsCount == 0 || GetSkipItemForListClipping()) { End(); return false; @@ -2320,6 +2320,13 @@ bool ImGuiListClipper::Step() StepNo = 2; } + // Reached end of list + if (DisplayEnd >= ItemsCount) + { + End(); + return false; + } + // Step 2: calculate the actual range of elements to display, and position the cursor before the first element if (StepNo == 2) {