gridview: GC tiles first
authorMatthias Clasen <mclasen@redhat.com>
Wed, 17 May 2023 16:30:16 +0000 (12:30 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 17 May 2023 16:31:16 +0000 (12:31 -0400)
Before checking that there are no tiles,
we need to gc any possibly leftover filler
tiles.

Fixes: #5836
gtk/gtkgridview.c

index 885826a138e7bb850752ffdf30f319bb44528d5c..438fd3dfa6af44368ab925741ff3f1e26960c936 100644 (file)
@@ -756,8 +756,14 @@ gtk_grid_view_size_allocate (GtkWidget *widget,
   min_row_height = ceil ((double) height / GTK_GRID_VIEW_MAX_VISIBLE_ROWS);
   gtk_list_base_get_border_spacing (GTK_LIST_BASE (self), &xspacing, &yspacing);
 
+  /* before we start: gc tiles */
+  for (tile = gtk_list_tile_gc (self->item_manager, gtk_list_item_manager_get_first (self->item_manager));
+     tile != NULL && tile->type == GTK_LIST_TILE_FILLER;
+     tile = gtk_list_tile_gc (self->item_manager, tile))
+    {};
+
   /* step 0: exit early if list is empty */
-  tile = gtk_list_tile_gc (self->item_manager, gtk_list_item_manager_get_first (self->item_manager));
+  tile = gtk_list_item_manager_get_first (self->item_manager);
   if (tile == NULL)
     {
       gtk_list_base_allocate (GTK_LIST_BASE (self));