Browse Source

Fix storing invalid item height values in `ItemList`

The height of the last N items is incorrectly overwritten with
the max height of first row (N = number of columns). This happen
in the first iteration of the while loop. Moving this code inside
if (all_fit) makes sure the last rows height is only updated at
the end when max height (max_h) is calculated for the last row.
coumcashier 1 year ago
parent
commit
1533292f09
1 changed files with 4 additions and 4 deletions
  1. 4 4
      scene/gui/item_list.cpp

+ 4 - 4
scene/gui/item_list.cpp

@@ -1431,11 +1431,11 @@ void ItemList::force_update_list_size() {
 			}
 			}
 		}
 		}
 
 
-		for (int j = items.size() - 1; j >= 0 && col > 0; j--, col--) {
-			items.write[j].rect_cache.size.y = max_h;
-		}
-
 		if (all_fit) {
 		if (all_fit) {
+			for (int j = items.size() - 1; j >= 0 && col > 0; j--, col--) {
+				items.write[j].rect_cache.size.y = max_h;
+			}
+
 			float page = MAX(0, size.height - theme_cache.panel_style->get_minimum_size().height);
 			float page = MAX(0, size.height - theme_cache.panel_style->get_minimum_size().height);
 			float max = MAX(page, ofs.y + max_h);
 			float max = MAX(page, ofs.y + max_h);
 			if (auto_height) {
 			if (auto_height) {