From 70a987f7e7173f301167a42b2b65ac5002f89622 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Mon, 28 Aug 2023 20:19:05 +0200 Subject: [PATCH] clutter: Do not trigger repick during relayout This is at best pointless, since the relayout will change pointer picking conditions, and buggy at worst, since the actor being relayout is not at an state that it can be asked during picking. This specifically fixes warnings like: Can't update stage views actor [:0x5601dd557050] is on because it needs an allocation. Can't update stage views actor [:0x5601edcf6aa0] is on because it needs an allocation. Can't update stage views actor [:0x5601ee163dc0] is on because it needs an allocation. Can't update stage views actor [:0x5601ee1c85b0] is on because it needs an allocation. Can't update stage views actor [:0x5601ee4db280] is on because it needs an allocation. Can't update stage views actor [:0x5601ee1840c0] is on because it needs an allocation. Can't update stage views actor [:0x5601ebe1d1b0] is on because it needs an allocation. Can't update stage views actor [:0x5601edbd3420] is on because it needs an allocation. Can't update stage views actor [:0x5601ee3cd630] is on because it needs an allocation. Can't update stage views actor [:0x5601ee685730] is on because it needs an allocation. Can't update stage views actor [:0x5601ed5b5f20] is on because it needs an allocation. When trying to dismiss the overview with a 3fg touchpad gesture while the pointer is over a window clone. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6935 Part-of: --- clutter/clutter/clutter-actor.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c index 0fc8c5c1d..4f4e1187a 100644 --- a/clutter/clutter/clutter-actor.c +++ b/clutter/clutter/clutter-actor.c @@ -2456,7 +2456,8 @@ transform_changed (ClutterActor *actor) static void update_pointer_if_not_animated (ClutterActor *actor) { - if (!clutter_actor_has_transitions (actor)) + if (!clutter_actor_has_transitions (actor) && + !CLUTTER_ACTOR_IN_RELAYOUT (actor)) clutter_actor_update_pointer (actor); }