wayland: Don't use CLUTTER_LEAVE source actor for repick

This is the actor receiving the event, therefore precisely not the
actor the pointer is on. We should avoid this event's source here,
use the related actor (i.e. the one being entered) instead.

Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1584
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1654>
This commit is contained in:
Carlos Garnacho 2020-12-22 17:24:31 +01:00
parent 794962327e
commit 0021fe173b

View File

@ -586,7 +586,9 @@ repick_for_event (MetaWaylandPointer *pointer,
ClutterActor *actor; ClutterActor *actor;
MetaWaylandSurface *surface; MetaWaylandSurface *surface;
if (for_event) if (for_event && clutter_event_type (for_event) == CLUTTER_LEAVE)
actor = clutter_event_get_related (for_event);
else if (for_event)
actor = clutter_event_get_source (for_event); actor = clutter_event_get_source (for_event);
else else
actor = clutter_stage_get_device_actor (stage, pointer->device, NULL); actor = clutter_stage_get_device_actor (stage, pointer->device, NULL);