mirror of
https://github.com/brl/mutter.git
synced 2024-11-10 07:56:14 -05:00
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:
parent
7e431bd6bc
commit
ead79f834c
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user