From: Matthias Clasen Date: Wed, 17 May 2023 16:30:16 +0000 (-0400) Subject: gridview: GC tiles first X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~243^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e121a5ca6f761fc4433187bf1ad13a093ede205d;p=gtk4.git gridview: GC tiles first Before checking that there are no tiles, we need to gc any possibly leftover filler tiles. Fixes: #5836 --- diff --git a/gtk/gtkgridview.c b/gtk/gtkgridview.c index 885826a138..438fd3dfa6 100644 --- a/gtk/gtkgridview.c +++ b/gtk/gtkgridview.c @@ -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));