[gtk/matthiasc/for-master] gridview: Don't assert on a condition that can happen



commit 2842030e59692e7e943c6db246485711e02e3883
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Jun 20 12:11:59 2020 -0400

    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(-)
---
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;
         }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]