From a066074054ef0a00cc48839d3b51dfdd36056839 Mon Sep 17 00:00:00 2001 From: ocornut Date: Thu, 31 Aug 2023 21:39:27 +0200 Subject: [PATCH] Clipper: Fixed a bug if attempt to force-include a range which matches an already included range. (#3841) --- docs/CHANGELOG.txt | 2 ++ imgui.cpp | 4 +++- imgui.h | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index fd21fc8c..75635670 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -61,6 +61,8 @@ Other changes: - ColorEdit, ColorPicker: Manipulating options popup don't mark item as edited. (#6722) (Note that they may still be marked as Active/Hovered.) - Clipper: Added IncludeItemByIndex() helper to include a single item. (#6424, #3841) +- Clipper: Fixed a bug if attempt to force-include a range which matches an already + included range, clipper would end earlier. (#3841) - ImDrawData: Fixed an issue where TotalVtxCount/TotalIdxCount does not match the sum of individual ImDrawList's buffer sizes when a dimming/modal background is rendered. (#6716) - ImDrawList: Automatically calling ChannelsMerge() if not done after a split. diff --git a/imgui.cpp b/imgui.cpp index 31c23128..2843fbaf 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -2975,13 +2975,15 @@ static bool ImGuiListClipper_StepInternal(ImGuiListClipper* clipper) } // Step 0+ (if item height is given in advance) or 1+: Display the next range in line. - if (data->StepNo < data->Ranges.Size) + while (data->StepNo < data->Ranges.Size) { clipper->DisplayStart = ImMax(data->Ranges[data->StepNo].Min, already_submitted); clipper->DisplayEnd = ImMin(data->Ranges[data->StepNo].Max, clipper->ItemsCount); if (clipper->DisplayStart > already_submitted) //-V1051 ImGuiListClipper_SeekCursorForItem(clipper, clipper->DisplayStart); data->StepNo++; + if (clipper->DisplayStart == clipper->DisplayEnd && data->StepNo < data->Ranges.Size) + continue; return true; } diff --git a/imgui.h b/imgui.h index cfac5c00..cc8ffaf3 100644 --- a/imgui.h +++ b/imgui.h @@ -26,7 +26,7 @@ // Library Version // (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345') #define IMGUI_VERSION "1.89.9 WIP" -#define IMGUI_VERSION_NUM 18984 +#define IMGUI_VERSION_NUM 18985 #define IMGUI_HAS_TABLE /*