From f8bc56dd553aebce376ba0eab6e296e19762b781 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 24 May 2017 18:22:00 +0200 Subject: [PATCH] gtkgesture: Consume button release/touch end events if gesture was claimed In these situations we must perform the "is it claimed" check before removing the (touch)point, as doing so when the gesture is empty will be too late if the gesture actually claimed input. --- gtk/gtkgesture.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gtk/gtkgesture.c b/gtk/gtkgesture.c index caef7d4612..d8885ea2eb 100644 --- a/gtk/gtkgesture.c +++ b/gtk/gtkgesture.c @@ -693,6 +693,11 @@ gtk_gesture_handle_event (GtkEventController *controller, (event->type == GDK_TOUCHPAD_PINCH && event->touchpad_pinch.phase == GDK_TOUCHPAD_GESTURE_PHASE_END)) { + gboolean was_claimed; + + was_claimed = + gtk_gesture_get_sequence_state (gesture, sequence) == GTK_EVENT_SEQUENCE_CLAIMED; + if (_gtk_gesture_update_point (gesture, event, FALSE)) { if (was_recognized && @@ -701,6 +706,8 @@ gtk_gesture_handle_event (GtkEventController *controller, _gtk_gesture_remove_point (gesture, event); } + + return was_claimed && was_recognized; } else if (event->type == GDK_MOTION_NOTIFY || event->type == GDK_TOUCH_UPDATE ||