[devhelp] Sidebar: simplify the code by using GTK_SELECTION_BROWSE



commit 2fe7fbba9365a7b5375c75915d2655aab2022f80
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Fri May 18 21:11:17 2018 +0200

    Sidebar: simplify the code by using GTK_SELECTION_BROWSE

 devhelp/dh-sidebar.c |   49 +++++++++----------------------------------------
 1 files changed, 9 insertions(+), 40 deletions(-)
---
diff --git a/devhelp/dh-sidebar.c b/devhelp/dh-sidebar.c
index 8bbc266..df3d274 100644
--- a/devhelp/dh-sidebar.c
+++ b/devhelp/dh-sidebar.c
@@ -248,41 +248,6 @@ hitlist_selection_changed_cb (GtkTreeSelection *selection,
         }
 }
 
-/* Make it possible to jump back to the currently selected item, useful when the
- * html view has been scrolled away.
- */
-static gboolean
-hitlist_button_press_cb (GtkTreeView    *hitlist_view,
-                         GdkEventButton *event,
-                         DhSidebar      *sidebar)
-{
-        DhSidebarPrivate *priv = dh_sidebar_get_instance_private (sidebar);
-        GtkTreePath *path;
-        GtkTreeIter iter;
-        DhLink *link;
-
-        gtk_tree_view_get_path_at_pos (hitlist_view, event->x, event->y, &path,
-                                       NULL, NULL, NULL);
-        if (path == NULL)
-                return GDK_EVENT_PROPAGATE;
-
-        gtk_tree_model_get_iter (GTK_TREE_MODEL (priv->hitlist_model), &iter, path);
-        gtk_tree_path_free (path);
-
-        gtk_tree_model_get (GTK_TREE_MODEL (priv->hitlist_model),
-                            &iter,
-                            DH_KEYWORD_MODEL_COL_LINK, &link,
-                            -1);
-
-        g_signal_emit (sidebar, signals[SIGNAL_LINK_SELECTED], 0, link);
-        dh_link_unref (link);
-
-        /* Always propagate the event so the tree view can update
-         * the selection etc.
-         */
-        return GDK_EVENT_PROPAGATE;
-}
-
 static gboolean
 entry_key_press_event_cb (GtkEntry    *entry,
                           GdkEventKey *event,
@@ -509,6 +474,7 @@ dh_sidebar_constructed (GObject *object)
 {
         DhSidebar *sidebar = DH_SIDEBAR (object);
         DhSidebarPrivate *priv = dh_sidebar_get_instance_private (sidebar);
+        GtkTreeSelection *selection;
         GtkCellRenderer *cell;
         DhBookList *book_list;
 
@@ -559,12 +525,15 @@ dh_sidebar_constructed (GObject *object)
         gtk_tree_view_set_enable_search (priv->hitlist_view, FALSE);
         gtk_widget_show (GTK_WIDGET (priv->hitlist_view));
 
-        g_signal_connect (priv->hitlist_view,
-                          "button-press-event",
-                          G_CALLBACK (hitlist_button_press_cb),
-                          sidebar);
+        selection = gtk_tree_view_get_selection (priv->hitlist_view);
+
+        /* Set BROWSE mode. When clicking again on the same (already selected)
+         * row, it re-emits the ::changed signal, which is convenient to come
+         * back to that symbol when the HTML view has been scrolled away.
+         */
+        gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
 
-        g_signal_connect (gtk_tree_view_get_selection (priv->hitlist_view),
+        g_signal_connect (selection,
                           "changed",
                           G_CALLBACK (hitlist_selection_changed_cb),
                           sidebar);


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