[eog/gnome-3-38] Merge branch 'fix/issue-189-thumb-view' into 'master'



commit 7563515e8361928568444d3cbb1e9f4a4af5f6bf
Author: Felix Riemann <friemann gnome org>
Date:   Wed Apr 21 17:45:44 2021 +0000

    Merge branch 'fix/issue-189-thumb-view' into 'master'
    
    Fixes crash in thumb view #189
    
    See merge request GNOME/eog!98
    
    (cherry picked from commit c415972a99028b1c983e04d94dbc1139c7f39873)
    
    f9152514 Add field `indices_changed`
    2c186d91 Change g_assert to g_return_if_fail

 src/eog-thumb-view.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)
---
diff --git a/src/eog-thumb-view.c b/src/eog-thumb-view.c
index d75a084c..f323feca 100644
--- a/src/eog-thumb-view.c
+++ b/src/eog-thumb-view.c
@@ -82,6 +82,8 @@ struct _EogThumbViewPrivate {
        gint n_images;
        gulong image_add_id;
        gulong image_removed_id;
+
+       gboolean indices_changed;
 };
 
 G_DEFINE_TYPE_WITH_CODE (EogThumbView, eog_thumb_view, GTK_TYPE_ICON_VIEW,
@@ -137,6 +139,7 @@ eog_thumb_view_constructed (GObject *object)
        thumbview->priv->start_thumb = 0;
        thumbview->priv->end_thumb = 0;
        thumbview->priv->menu = NULL;
+       thumbview->priv->indices_changed = FALSE;
 
        g_signal_connect (G_OBJECT (thumbview), "parent-set",
                          G_CALLBACK (thumbview_on_parent_set_cb), NULL);
@@ -244,7 +247,7 @@ eog_thumb_view_clear_range (EogThumbView *thumbview,
        gint thumb = start_thumb;
        gboolean result;
 
-       g_assert (start_thumb <= end_thumb);
+       g_return_if_fail (start_thumb <= end_thumb);
 
        path = gtk_tree_path_new_from_indices (start_thumb, -1);
        for (result = gtk_tree_model_get_iter (GTK_TREE_MODEL (store), &iter, path);
@@ -266,7 +269,7 @@ eog_thumb_view_add_range (EogThumbView *thumbview,
        gint thumb = start_thumb;
        gboolean result;
 
-       g_assert (start_thumb <= end_thumb);
+       g_return_if_fail (start_thumb <= end_thumb);
 
        path = gtk_tree_path_new_from_indices (start_thumb, -1);
        for (result = gtk_tree_model_get_iter (GTK_TREE_MODEL (store), &iter, path);
@@ -288,7 +291,8 @@ eog_thumb_view_update_visible_range (EogThumbView *thumbview,
        old_start_thumb= priv->start_thumb;
        old_end_thumb = priv->end_thumb;
 
-       if (start_thumb == old_start_thumb &&
+       if (!priv->indices_changed &&
+           start_thumb == old_start_thumb &&
            end_thumb == old_end_thumb) {
                return;
        }
@@ -303,6 +307,7 @@ eog_thumb_view_update_visible_range (EogThumbView *thumbview,
 
        priv->start_thumb = start_thumb;
        priv->end_thumb = end_thumb;
+       priv->indices_changed = FALSE;
 }
 
 static gboolean
@@ -681,6 +686,7 @@ eog_thumb_view_row_inserted_cb (GtkTreeModel    *tree_model,
 {
        EogThumbViewPrivate *priv = view->priv;
 
+       priv->indices_changed = TRUE;
        priv->n_images++;
        eog_thumb_view_update_columns (view);
 }
@@ -692,7 +698,7 @@ eog_thumb_view_row_deleted_cb (GtkTreeModel    *tree_model,
 {
        EogThumbViewPrivate *priv = view->priv;
 
-       priv->end_thumb--;
+       priv->indices_changed = TRUE;
        priv->n_images--;
        eog_thumb_view_update_columns (view);
 }


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