From 961419b33102f996c8f8f2aba275b7f34d91da78 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Fri, 3 Sep 2021 23:26:52 +0200 Subject: [PATCH] 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: --- clutter/clutter/clutter-actor.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c index 3da25d640..4b1c0813b 100644 --- a/clutter/clutter/clutter-actor.c +++ b/clutter/clutter/clutter-actor.c @@ -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); }