From fe9685bca12c0f8b8538f65c49f1d57f82ad08bb Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 7 May 2014 19:08:50 +0200 Subject: widget: tighten the conditions at which a press event is emulated Make it really sure that the event is only emitted after every gesture that consumed the button press is done with the sequence. The event must only be emulated if a gesture in the capture phase happened to consume the event, be cancelled, and --- gtk/gtkgesture.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'gtk/gtkgesture.c') diff --git a/gtk/gtkgesture.c b/gtk/gtkgesture.c index 420ad9ffa3..e738e61c1c 100644 --- a/gtk/gtkgesture.c +++ b/gtk/gtkgesture.c @@ -510,7 +510,10 @@ gtk_gesture_handle_event (GtkEventController *controller, PointData *data; data = g_hash_table_lookup (priv->points, sequence); - data->press_handled = TRUE; + + /* If the sequence was claimed early, the press event will be consumed */ + if (gtk_gesture_get_sequence_state (gesture, sequence) == GTK_EVENT_SEQUENCE_CLAIMED) + data->press_handled = TRUE; } break; @@ -820,7 +823,7 @@ gtk_gesture_set_sequence_state (GtkGesture *gesture, return FALSE; if (data->state == state) - return TRUE; + return FALSE; /* denied sequences remain denied */ if (data->state == GTK_EVENT_SEQUENCE_DENIED) -- cgit v1.2.1