[evince] Make EvSidebarBookmarks not jump to the last page when adding or removing bookmarks



commit 58f2deae034d7c5b28981d7182623ee51ca393ae
Author: Casey Jao <casey jao gmail com>
Date:   Sat Aug 26 10:41:55 2017 -0700

    Make EvSidebarBookmarks not jump to the last page when adding or removing bookmarks
    
    shell/ev-sidebar-bookmarks.c:
    *In ev_sidebar_bookmarks_update, block the selection->changed
     signal when clearing the GtkTreeView's model.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=732834

 shell/ev-sidebar-bookmarks.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)
---
diff --git a/shell/ev-sidebar-bookmarks.c b/shell/ev-sidebar-bookmarks.c
index 328aea5..b2535b6 100644
--- a/shell/ev-sidebar-bookmarks.c
+++ b/shell/ev-sidebar-bookmarks.c
@@ -55,6 +55,8 @@ struct _EvSidebarBookmarksPrivate {
 };
 
 static void ev_sidebar_bookmarks_page_iface_init (EvSidebarPageInterface *iface);
+static void ev_sidebar_bookmarks_selection_changed (GtkTreeSelection   *selection,
+                                                   EvSidebarBookmarks *sidebar_bookmarks);
 
 G_DEFINE_TYPE_EXTENDED (EvSidebarBookmarks,
                         ev_sidebar_bookmarks,
@@ -169,9 +171,18 @@ ev_sidebar_bookmarks_update (EvSidebarBookmarks *sidebar_bookmarks)
         GtkListStore              *model;
         GList                     *items, *l;
         GtkTreeIter                iter;
+        GtkTreeView               *tree_view = GTK_TREE_VIEW (priv->tree_view);
+        GtkTreeSelection          *selection = gtk_tree_view_get_selection (tree_view);
+
+        model = GTK_LIST_STORE (gtk_tree_view_get_model (tree_view));
 
-        model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (priv->tree_view)));
+        g_signal_handlers_block_by_func (selection,
+                                         ev_sidebar_bookmarks_selection_changed,
+                                         sidebar_bookmarks);
         gtk_list_store_clear (model);
+        g_signal_handlers_unblock_by_func (selection,
+                                           ev_sidebar_bookmarks_selection_changed,
+                                           sidebar_bookmarks);
 
         if (!priv->bookmarks) {
                 g_object_set (priv->tree_view, "has-tooltip", FALSE, NULL);


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