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.
This commit is contained in:
Matthias Clasen 2020-06-20 12:11:59 -04:00
parent 7c2d21892f
commit 2842030e59

View File

@ -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;
}