Revert "wayland-pointer: Just use the pointer actor instead of doing a full repick"

This reverts commit 33acb5fea0.

The issue here is that the pointer actor does not actually get reset
when the actor's reactivity changes, so we end up with stale picks after
actors are destroyed.

I have a local patch to Clutter for this, but I don't have time to
submit it upstream, so let's just use the ugly code for now.
This commit is contained in:
Jasper St. Pierre 2014-10-08 13:43:57 -07:00
parent 7e431bd6bc
commit ead79f834c

View File

@ -281,12 +281,25 @@ static void
repick_for_event (MetaWaylandPointer *pointer,
const ClutterEvent *for_event)
{
ClutterActor *actor;
ClutterActor *actor = NULL;
if (for_event)
actor = clutter_event_get_source (for_event);
{
actor = clutter_event_get_source (for_event);
}
else
actor = clutter_input_device_get_pointer_actor (pointer->device);
{
ClutterStage *stage = clutter_input_device_get_pointer_stage (pointer->device);
if (stage)
{
ClutterPoint pos;
clutter_input_device_get_coords (pointer->device, NULL, &pos);
actor = clutter_stage_get_actor_at_pos (stage, CLUTTER_PICK_REACTIVE,
pos.x, pos.y);
}
}
if (META_IS_SURFACE_ACTOR_WAYLAND (actor))
pointer->current = meta_surface_actor_wayland_get_surface (META_SURFACE_ACTOR_WAYLAND (actor));