mirror of
https://github.com/Drezil/imgui.git
synced 2025-04-03 09:52:43 +00:00
Clipper: fixed invalid state when number of frozen table row is smaller than ItemCount.
+ Bonus rather unorthodox coding style.
This commit is contained in:
parent
027a7ba3eb
commit
926addbfe2
@ -74,6 +74,7 @@ Other Changes:
|
|||||||
(an additional ItemSpacing.y was declared, affecting scrollbar range).
|
(an additional ItemSpacing.y was declared, affecting scrollbar range).
|
||||||
- Clipper: various and incomplete changes to tame down scrolling and precision issues on very large ranges.
|
- Clipper: various and incomplete changes to tame down scrolling and precision issues on very large ranges.
|
||||||
Passing an explicit height to the clipper now allows larger ranges. (#3609, #3962).
|
Passing an explicit height to the clipper now allows larger ranges. (#3609, #3962).
|
||||||
|
- Clipper: fixed invalid state when number of frozen table row is smaller than ItemCount.
|
||||||
- Drag and Drop: BeginDragDropSource() with ImGuiDragDropFlags_SourceAllowNullID doesn't lose
|
- Drag and Drop: BeginDragDropSource() with ImGuiDragDropFlags_SourceAllowNullID doesn't lose
|
||||||
tooltip when scrolling. (#143)
|
tooltip when scrolling. (#143)
|
||||||
- Metrics: Added a node showing windows in submission order and showing the Begin() stack.
|
- Metrics: Added a node showing windows in submission order and showing the Begin() stack.
|
||||||
|
@ -2435,10 +2435,7 @@ bool ImGuiListClipper::Step()
|
|||||||
|
|
||||||
// No items
|
// No items
|
||||||
if (ItemsCount == 0 || GetSkipItemForListClipping())
|
if (ItemsCount == 0 || GetSkipItemForListClipping())
|
||||||
{
|
return (void)End(), false;
|
||||||
End();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// While we are in frozen row state, keep displaying items one by one, unclipped
|
// While we are in frozen row state, keep displaying items one by one, unclipped
|
||||||
// FIXME: Could be stored as a table-agnostic state.
|
// FIXME: Could be stored as a table-agnostic state.
|
||||||
@ -2446,6 +2443,8 @@ bool ImGuiListClipper::Step()
|
|||||||
{
|
{
|
||||||
DisplayStart = data->ItemsFrozen;
|
DisplayStart = data->ItemsFrozen;
|
||||||
DisplayEnd = data->ItemsFrozen + 1;
|
DisplayEnd = data->ItemsFrozen + 1;
|
||||||
|
if (DisplayStart >= ItemsCount)
|
||||||
|
return (void)End(), false;
|
||||||
data->ItemsFrozen++;
|
data->ItemsFrozen++;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -2461,6 +2460,8 @@ bool ImGuiListClipper::Step()
|
|||||||
data->Ranges.push_front(ImGuiListClipperRange::FromIndices(data->ItemsFrozen, data->ItemsFrozen + 1));
|
data->Ranges.push_front(ImGuiListClipperRange::FromIndices(data->ItemsFrozen, data->ItemsFrozen + 1));
|
||||||
DisplayStart = ImMax(data->Ranges[0].Min, data->ItemsFrozen);
|
DisplayStart = ImMax(data->Ranges[0].Min, data->ItemsFrozen);
|
||||||
DisplayEnd = ImMin(data->Ranges[0].Max, ItemsCount);
|
DisplayEnd = ImMin(data->Ranges[0].Max, ItemsCount);
|
||||||
|
if (DisplayStart == DisplayEnd)
|
||||||
|
return (void)End(), false;
|
||||||
data->StepNo = 1;
|
data->StepNo = 1;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user