summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMat <mail@mathias.is>2022-07-17 06:32:20 +0300
committerMat <mail@mathias.is>2022-09-02 15:04:43 +0300
commit58953671fe935fb6bcbccbc8424fe30d4216cd4b (patch)
treec96aa6f2e71c72fa7fc9f0e48e1976d596052156
parentdf527758b1f9d42f5a7eaa58b4ecc8bcb3cda36f (diff)
downloadgtk+-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.c9
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)