[mutter/wip/carlosg/unthrottled-wayland: 240/240] clutter: Trigger pointer repick after animatable property changes




commit 9f8c37f7fb184ec4ca18d738a2cdc60019c60a86
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Sep 3 23:26:52 2021 +0200

    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.

 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 767d982388..daf794f135 100644
--- a/clutter/clutter/clutter-actor.c
+++ b/clutter/clutter/clutter-actor.c
@@ -13264,6 +13264,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,
@@ -13314,6 +13330,8 @@ clutter_actor_set_final_state (ClutterAnimatable *animatable,
         }
     }
 
+  clutter_actor_update_pointer (actor);
+
   g_free (p_name);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]