From 2842030e59692e7e943c6db246485711e02e3883 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 20 Jun 2020 12:11:59 -0400 Subject: gridview: Don't assert on a condition that can happen We are currently not robust against model changes or widget invalidations, so we can actually end up in situations where we run out of items here. Handle the failure a bit more gracefully, by returning NULL. This is good enough to make scrolling work okish most of the time. We still need a proper fix to handle other situations. --- gtk/gtkgridview.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'gtk/gtkgridview.c') diff --git a/gtk/gtkgridview.c b/gtk/gtkgridview.c index b9c2c9a87c..5b2a381c69 100644 --- a/gtk/gtkgridview.c +++ b/gtk/gtkgridview.c @@ -270,7 +270,17 @@ gtk_grid_view_get_cell_at_y (GtkGridView *self, if (pos % self->n_columns) { skip = self->n_columns - pos % self->n_columns; - g_assert (n_items > skip); + if (n_items <= skip) + { + g_warning ("ran out of items"); + if (position) + *position = 0; + if (offset) + *offset = 0; + if (size) + *size = 0; + return NULL; + } n_items -= skip; pos += skip; } -- cgit v1.2.1