clutter: Cancel ClutterGestureActions on leave+grab_notify events

The lack of handling of regular crossing events here is dubious, perhaps
to be fixed later on. So far, ensure gestures are cancelled whenever
a grab-inducted crossing event would leave this action in the blue.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2099>
This commit is contained in:
Carlos Garnacho 2021-10-29 12:52:52 +02:00 committed by Marge Bot
parent c2d7e635b1
commit f22ea7399c

View File

@ -380,6 +380,15 @@ clutter_gesture_action_handle_event (ClutterAction *action,
return CLUTTER_EVENT_PROPAGATE; return CLUTTER_EVENT_PROPAGATE;
} }
if (priv->in_gesture && point &&
event_type == CLUTTER_LEAVE &&
(event->crossing.flags & CLUTTER_EVENT_FLAG_GRAB_NOTIFY) != 0)
{
priv->in_gesture = FALSE;
cancel_gesture (gesture_action);
return CLUTTER_EVENT_PROPAGATE;
}
switch (clutter_event_type (event)) switch (clutter_event_type (event))
{ {
case CLUTTER_BUTTON_PRESS: case CLUTTER_BUTTON_PRESS: