summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2021-09-03 23:26:52 +0200
committerCarlos Garnacho <carlosg@gnome.org>2021-09-03 23:34:09 +0200
commit1cf6721e0653d5807cf92868a3f444aa1f5ccf91 (patch)
tree14936e8b5cbc7f93c5395a0a8e051a5c40cddba6
parent4112d2ddccf78325793f4f679f79c71538865bd9 (diff)
downloadmutter-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.c18
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);
}