[balsa/wip/gtk4: 105/351] Use a tree-view's "row-activated" signal



commit 9080540f3b9d4cfb0bd33d8472d8fdc6c566ae66
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Tue Dec 19 17:26:31 2017 -0500

    Use a tree-view's "row-activated" signal
    
    libbalsa-gpgme-cb: Use the tree-view's "row-activated" signal instead
    of waiting for a literal double click.

 libbalsa/libbalsa-gpgme-cb.c |   39 ++++++++-------------------------------
 1 files changed, 8 insertions(+), 31 deletions(-)
---
diff --git a/libbalsa/libbalsa-gpgme-cb.c b/libbalsa/libbalsa-gpgme-cb.c
index d067596..8f14d6c 100644
--- a/libbalsa/libbalsa-gpgme-cb.c
+++ b/libbalsa/libbalsa-gpgme-cb.c
@@ -126,34 +126,16 @@ lb_gpgme_passphrase(void *hook, const gchar * uid_hint,
 
 
 static void
-tree_view_multi_press_cb(GtkGestureMultiPress * gesture,
-                         gint                   n_press,
-                         gdouble                x,
-                         gdouble                y,
-                         gpointer               user_data)
+lb_gpgme_row_activated_cb(GtkTreeView       * tree_view,
+                          GtkTreePath       * path,
+                          GtkTreeViewColumn * column,
+                          gpointer            user_data)
 {
-    GtkTreeView *tree_view;
-    GtkTreeSelection *selection;
-    GtkTreePath *path;
     GtkTreeIter iter;
     GtkTreeModel *model;
 
-    if (n_press != 2) {
-        return;
-    }
-    gtk_gesture_set_state(GTK_GESTURE(gesture), GTK_EVENT_SEQUENCE_CLAIMED);
-
-    tree_view = GTK_TREE_VIEW(gtk_event_controller_get_widget(GTK_EVENT_CONTROLLER(gesture)));
-    selection = gtk_tree_view_get_selection(tree_view);
-    if (gtk_tree_view_get_path_at_pos(tree_view, (gint) x, (gint) y, &path, NULL, NULL, NULL)) {
-        if (!gtk_tree_selection_path_is_selected(selection, path)) {
-            gtk_tree_view_set_cursor(tree_view, path, NULL, FALSE);
-            gtk_tree_view_scroll_to_cell(tree_view, path, NULL, FALSE, 0, 0);
-        }
-        gtk_tree_path_free(path);
-    }
-
-    if (gtk_tree_selection_get_selected(selection, &model, &iter)) {
+    model = gtk_tree_view_get_model(tree_view);
+    if (gtk_tree_model_get_iter(model, &iter, path)) {
        gpgme_key_t key;
        GtkWidget *dialog;
 
@@ -164,7 +146,6 @@ tree_view_multi_press_cb(GtkGestureMultiPress * gesture,
     }
 }
 
-
 gpgme_key_t
 lb_gpgme_select_key(const gchar * user_name, lb_key_sel_md_t mode, GList * keys,
                    gpgme_protocol_t protocol, GtkWindow * parent)
@@ -183,7 +164,6 @@ lb_gpgme_select_key(const gchar * user_name, lb_key_sel_md_t mode, GList * keys,
     gint width, height;
        GtkCellRenderer *renderer;
        GtkTreeViewColumn *column;
-    GtkGesture *gesture;
 
     /* FIXME: create dialog according to the Gnome HIG */
     dialog = gtk_dialog_new_with_buttons(_("Select key"),
@@ -250,6 +230,8 @@ lb_gpgme_select_key(const gchar * user_name, lb_key_sel_md_t mode, GList * keys,
     gtk_tree_sortable_set_sort_column_id(sortable, 0, GTK_SORT_ASCENDING);
 
     tree_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model));
+    g_signal_connect(tree_view, "row-activated",
+                     G_CALLBACK(lb_gpgme_row_activated_cb), dialog);
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view));
     g_object_set_data(G_OBJECT(selection), "dialog", dialog);
     g_object_set_data(G_OBJECT(selection), "first", GUINT_TO_POINTER(1));
@@ -287,11 +269,6 @@ lb_gpgme_select_key(const gchar * user_name, lb_key_sel_md_t mode, GList * keys,
 
     gtk_container_add(GTK_CONTAINER(scrolled_window), tree_view);
 
-    gesture = gtk_gesture_multi_press_new(tree_view);
-    g_object_set_data_full(G_OBJECT(tree_view), "balsa-gesture",
-                           gesture, g_object_unref);
-    g_signal_connect(gesture, "pressed", G_CALLBACK(tree_view_multi_press_cb), dialog);
-
     /* set window size to 2/3 of the parent */
     gtk_window_get_size(parent, &width, &height);
     gtk_window_set_default_size(GTK_WINDOW(dialog), (2 * width) / 3, (2 * height) / 3);


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