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: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1915>
This commit is contained in:
parent
bdd03b9ccd
commit
961419b331
@ -13266,6 +13266,22 @@ clutter_actor_set_animatable_property (ClutterActor *actor,
|
|||||||
g_object_thaw_notify (obj);
|
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
|
static void
|
||||||
clutter_actor_set_final_state (ClutterAnimatable *animatable,
|
clutter_actor_set_final_state (ClutterAnimatable *animatable,
|
||||||
const gchar *property_name,
|
const gchar *property_name,
|
||||||
@ -13316,6 +13332,8 @@ clutter_actor_set_final_state (ClutterAnimatable *animatable,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
clutter_actor_update_pointer (actor);
|
||||||
|
|
||||||
g_free (p_name);
|
g_free (p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user