gesturesingle: Ignore motion/updates from unhandled sequences
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 13 Apr 2015 14:15:11 +0000 (16:15 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 13 Apr 2015 15:27:04 +0000 (17:27 +0200)
This used to do the right thing, practically ignoring those event
if they went all through the event handler, unless this motion event
triggered the cancellation of this gesture from the event handler
of another controllers.

In this case, the controller would be reset, but the motion event
would still go through its handler, setting again
current_button/sequence as the motion event has buttons in its
modifiers. This leaves GtkGestureSingle with inconsistent data
that may interfere with future runs.

https://bugzilla.gnome.org/show_bug.cgi?id=747469

gtk/gtkgesturesingle.c

index 458bffe5ecea1b2e8e1d32628444a8001ff17ad7..5b595c508ef5da40c39573c8c5855db9a7806a78 100644 (file)
@@ -169,6 +169,8 @@ gtk_gesture_single_handle_event (GtkEventController *controller,
       button = event->button.button;
       break;
     case GDK_MOTION_NOTIFY:
+      if (!gtk_gesture_handles_sequence (GTK_GESTURE (controller), sequence))
+        return FALSE;
       if (priv->touch_only && !test_touchscreen && source != GDK_SOURCE_TOUCHSCREEN)
         return FALSE;