diff options
Diffstat (limited to 'shell/ev-sidebar-thumbnails.c')
-rw-r--r-- | shell/ev-sidebar-thumbnails.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/shell/ev-sidebar-thumbnails.c b/shell/ev-sidebar-thumbnails.c index 0c420f57..f7f92666 100644 --- a/shell/ev-sidebar-thumbnails.c +++ b/shell/ev-sidebar-thumbnails.c @@ -726,9 +726,26 @@ ev_sidebar_thumbnails_use_icon_view (EvSidebarThumbnails *sidebar_thumbnails) } static void +ev_sidebar_thumbnails_row_changed (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + gpointer data) +{ + guint signal_id; + + signal_id = GPOINTER_TO_UINT (data); + + /* PREVENT GtkIconView "row-changed" handler to be reached, as it will + * perform a full invalidate and relayout of all items, See bug: + * https://bugzilla.gnome.org/show_bug.cgi?id=691448#c9 */ + g_signal_stop_emission (model, signal_id, 0); +} + +static void ev_sidebar_thumbnails_init (EvSidebarThumbnails *ev_sidebar_thumbnails) { EvSidebarThumbnailsPrivate *priv; + guint signal_id; priv = ev_sidebar_thumbnails->priv = EV_SIDEBAR_THUMBNAILS_GET_PRIVATE (ev_sidebar_thumbnails); @@ -738,6 +755,11 @@ ev_sidebar_thumbnails_init (EvSidebarThumbnails *ev_sidebar_thumbnails) G_TYPE_BOOLEAN, EV_TYPE_JOB_THUMBNAIL); + signal_id = g_signal_lookup ("row-changed", GTK_TYPE_TREE_MODEL); + g_signal_connect (GTK_TREE_MODEL (priv->list_store), "row-changed", + G_CALLBACK (ev_sidebar_thumbnails_row_changed), + GUINT_TO_POINTER (signal_id)); + priv->swindow = gtk_scrolled_window_new (NULL, NULL); /* We actually don't want GTK_POLICY_AUTOMATIC for horizontal scrollbar here @@ -870,6 +892,8 @@ thumbnail_job_completed_callback (EvJobThumbnail *job, COLUMN_THUMBNAIL_SET, TRUE, COLUMN_JOB, NULL, -1); + + gtk_widget_queue_draw (priv->icon_view); } static void |