[gtk: 1/2] treeview: Don't claim event sequence too early




commit 58953671fe935fb6bcbccbc8424fe30d4216cd4b
Author: Mat <mail mathias is>
Date:   Sun Jul 17 06:32:20 2022 +0300

    treeview: Don't claim event sequence too early
    
    We want to claim the event sequence in the click gesture when appropriate,
    such as activating a row or clicking an editable cell, but this is currently
    done too early, preventing other gestures for drag-and-drop and rubberband
    selection entirely.
    
    Fixes #3649
    Fixes #3985
    Fixes #4669

 gtk/gtktreeview.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
---
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 5c627b4fb2..07e02ee7d4 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -2758,8 +2758,6 @@ gtk_tree_view_click_gesture_pressed (GtkGestureClick *gesture,
       return;
     }
 
-  gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED);
-
   if (n_press > 1)
     gtk_gesture_set_state (priv->drag_gesture,
                            GTK_EVENT_SEQUENCE_DENIED);
@@ -2787,6 +2785,7 @@ gtk_tree_view_click_gesture_pressed (GtkGestureClick *gesture,
         }
 
       grab_focus_and_unset_draw_keyfocus (tree_view);
+      gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED);
       return;
     }
 
@@ -2910,6 +2909,7 @@ gtk_tree_view_click_gesture_pressed (GtkGestureClick *gesture,
             {
               GtkCellArea *area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (column));
               cell_editable = gtk_cell_area_get_edit_widget (area);
+              gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED);
 
               if (cell_editable != NULL)
                 {
@@ -2967,7 +2967,10 @@ gtk_tree_view_click_gesture_pressed (GtkGestureClick *gesture,
     }
 
   if (button == GDK_BUTTON_PRIMARY && n_press == 2)
-    gtk_tree_view_row_activated (tree_view, path, column);
+    {
+      gtk_tree_view_row_activated (tree_view, path, column);
+      gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED);
+    }
   else
     {
       if (n_press == 1)


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