gtkgesture: Check claimed status after event delivery
authorCarlos Garnacho <carlosg@gnome.org>
Tue, 19 Jun 2018 11:38:09 +0000 (13:38 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Tue, 19 Jun 2018 11:47:38 +0000 (13:47 +0200)
The claimed status check should happen after ::end is emitted,
as the gesture may deny the sequence that much late. In this
case the event should keep propagating.

https://gitlab.gnome.org/GNOME/gtk/issues/1159

Closes: #1159
gtk/gtkgesture.c

index c7aeb2998819bd51c6acae333cd4067f88929f70..7276a3043d5e91c5349c488b09b663ba7d5e51ee 100644 (file)
@@ -698,9 +698,6 @@ gtk_gesture_handle_event (GtkEventController *controller,
     {
       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 &&
@@ -710,6 +707,9 @@ gtk_gesture_handle_event (GtkEventController *controller,
           _gtk_gesture_remove_point (gesture, event);
         }
 
+      was_claimed =
+        gtk_gesture_get_sequence_state (gesture, sequence) == GTK_EVENT_SEQUENCE_CLAIMED;
+
       return was_claimed && was_recognized;
     }
   else if (event_type == GDK_MOTION_NOTIFY ||