diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2021-09-03 23:26:52 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2021-09-03 23:34:09 +0200 |
commit | 1cf6721e0653d5807cf92868a3f444aa1f5ccf91 (patch) | |
tree | 14936e8b5cbc7f93c5395a0a8e051a5c40cddba6 | |
parent | 4112d2ddccf78325793f4f679f79c71538865bd9 (diff) | |
download | mutter-wip/carlosg/unthrottled-wayland.tar.gz |
clutter: Trigger pointer repick after animatable property changeswip/carlosg/unthrottled-wayland
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.
-rw-r--r-- | clutter/clutter/clutter-actor.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c index e7c84be10..56bf8fe47 100644 --- a/clutter/clutter/clutter-actor.c +++ b/clutter/clutter/clutter-actor.c @@ -13252,6 +13252,22 @@ clutter_actor_set_animatable_property (ClutterActor *actor, } 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, const GValue *final) @@ -13301,6 +13317,8 @@ clutter_actor_set_final_state (ClutterAnimatable *animatable, } } + clutter_actor_update_pointer (actor); + g_free (p_name); } |