clutter: Trigger pointer repick after animatable property changes

This is notably necessary with transformations, since these don't
trigger allocation machinery, but may affect the actor under the
pointer.

Visible e.g. with GNOME Shell's "Application does not respond"
dialogs.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1915>
This commit is contained in:
Carlos Garnacho 2021-09-03 23:26:52 +02:00 committed by Marge Bot
parent bdd03b9ccd
commit 961419b331

View File

@ -13266,6 +13266,22 @@ clutter_actor_set_animatable_property (ClutterActor *actor,
g_object_thaw_notify (obj);
}
static void
clutter_actor_update_pointer (ClutterActor *self)
{
ClutterInputDevice *pointer;
ClutterStage *stage;
ClutterSeat *seat;
stage = CLUTTER_STAGE (_clutter_actor_get_stage_internal (self));
if (!stage)
return;
seat = clutter_backend_get_default_seat (clutter_get_default_backend ());
pointer = clutter_seat_get_pointer (seat);
clutter_stage_repick_device (stage, pointer);
}
static void
clutter_actor_set_final_state (ClutterAnimatable *animatable,
const gchar *property_name,
@ -13316,6 +13332,8 @@ clutter_actor_set_final_state (ClutterAnimatable *animatable,
}
}
clutter_actor_update_pointer (actor);
g_free (p_name);
}