mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01: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:
		| @@ -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; | ||||||
|         } |         } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user