mirror of
https://github.com/brl/mutter.git
synced 2024-09-20 06:25:51 -04: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,
|
repick_for_event (MetaWaylandPointer *pointer,
|
||||||
const ClutterEvent *for_event)
|
const ClutterEvent *for_event)
|
||||||
{
|
{
|
||||||
ClutterActor *actor;
|
ClutterActor *actor = NULL;
|
||||||
|
|
||||||
if (for_event)
|
if (for_event)
|
||||||
actor = clutter_event_get_source (for_event);
|
{
|
||||||
|
actor = clutter_event_get_source (for_event);
|
||||||
|
}
|
||||||
else
|
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))
|
if (META_IS_SURFACE_ACTOR_WAYLAND (actor))
|
||||||
pointer->current = meta_surface_actor_wayland_get_surface (META_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