summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-05-18 10:58:19 +0000
committerMatthias Clasen <mclasen@redhat.com>2021-05-18 10:58:19 +0000
commit7de266a620adda1efb18a6035ec21e7e1905b425 (patch)
tree79bc3d5c366555e2debcdb99d4d260a22e66fc7b
parent4cbc5ed20af47ced275813fc48342cc3414738e4 (diff)
parent53df32e6cf1e2a7cbec8dd8d3b3acd4ddae2b9bf (diff)
downloadgtk+-7de266a620adda1efb18a6035ec21e7e1905b425.tar.gz
Merge branch 'wip/carlosg/sequence-accepted-in-group' into 'master'
gtkgesture: Apply gesture group state after setting up sequence Closes #3946 See merge request GNOME/gtk!3560
-rw-r--r--gtk/gtkgesture.c30
1 files changed, 18 insertions, 12 deletions
diff --git a/gtk/gtkgesture.c b/gtk/gtkgesture.c
index c345eb98e5..ea1b5b8cf8 100644
--- a/gtk/gtkgesture.c
+++ b/gtk/gtkgesture.c
@@ -477,8 +477,6 @@ _gtk_gesture_update_point (GtkGesture *gesture,
NULL, (gpointer *) &data);
if (!existed)
{
- GtkEventSequenceState group_state;
-
if (!add)
return FALSE;
@@ -490,9 +488,6 @@ _gtk_gesture_update_point (GtkGesture *gesture,
data = g_new0 (PointData, 1);
g_hash_table_insert (priv->points, sequence, data);
-
- group_state = gtk_gesture_get_group_state (gesture, sequence);
- gtk_gesture_set_sequence_state (gesture, sequence, group_state);
}
if (data->event)
@@ -504,13 +499,24 @@ _gtk_gesture_update_point (GtkGesture *gesture,
data->widget_x = x + data->accum_dx;
data->widget_y = y + data->accum_dy;
- /* Deny the sequence right away if the expected
- * number of points is exceeded, so this sequence
- * can be tracked with gtk_gesture_handles_sequence().
- */
- if (!existed && _gtk_gesture_get_n_physical_points (gesture, FALSE) > priv->n_points)
- gtk_gesture_set_sequence_state (gesture, sequence,
- GTK_EVENT_SEQUENCE_DENIED);
+ if (!existed)
+ {
+ GtkEventSequenceState state;
+
+ /* Deny the sequence right away if the expected
+ * number of points is exceeded, so this sequence
+ * can be tracked with gtk_gesture_handles_sequence().
+ *
+ * Otherwise, make the sequence inherit the same state
+ * from other gestures in the same group.
+ */
+ if (_gtk_gesture_get_n_physical_points (gesture, FALSE) > priv->n_points)
+ state = GTK_EVENT_SEQUENCE_DENIED;
+ else
+ state = gtk_gesture_get_group_state (gesture, sequence);
+
+ gtk_gesture_set_sequence_state (gesture, sequence, state);
+ }
return TRUE;
}