gesturesingle: Ignore motion/updates from unhandled sequences

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
This commit is contained in:
Carlos Garnacho 2015-04-13 16:15:11 +02:00
parent 71c0efb361
commit 8bf5b175b1

View 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;