diff options
author | Mat <mail@mathias.is> | 2022-07-17 06:32:20 +0300 |
---|---|---|
committer | Mat <mail@mathias.is> | 2022-09-02 15:04:43 +0300 |
commit | 58953671fe935fb6bcbccbc8424fe30d4216cd4b (patch) | |
tree | c96aa6f2e71c72fa7fc9f0e48e1976d596052156 | |
parent | df527758b1f9d42f5a7eaa58b4ecc8bcb3cda36f (diff) | |
download | gtk+-58953671fe935fb6bcbccbc8424fe30d4216cd4b.tar.gz |
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
-rw-r--r-- | gtk/gtktreeview.c | 9 |
1 files 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) |