summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte.benjamin@googlemail.com>2023-05-17 17:04:43 +0000
committerBenjamin Otte <otte.benjamin@googlemail.com>2023-05-17 17:04:43 +0000
commitff14fea67243948971858e6230ad05aa6ffe7442 (patch)
tree834c25d985eaf575a8df142d6df44c0afb42a928
parente79851502c27105ad8c6a205bb577e70ee6681a4 (diff)
parente121a5ca6f761fc4433187bf1ad13a093ede205d (diff)
downloadgtk+-ff14fea67243948971858e6230ad05aa6ffe7442.tar.gz
Merge branch 'fix-gridview-critical' into 'main'
gridview: GC tiles first Closes #5836 See merge request GNOME/gtk!5988
-rw-r--r--gtk/gtkgridview.c8
1 files changed, 7 insertions, 1 deletions
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));