clutter: Key events should not be delivered to non reactive actors

Drop this piece of old code that assumes all actors want key events.
We currently have the reactive flag to indicate these want input.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2099>
This commit is contained in:
Carlos Garnacho 2021-10-27 11:25:55 +02:00 committed by Marge Bot
parent 27cbf7b23d
commit 4b0e998ab8

View File

@ -19027,16 +19027,9 @@ _clutter_actor_handle_event (ClutterActor *self,
{ {
GPtrArray *event_tree; GPtrArray *event_tree;
ClutterActor *iter; ClutterActor *iter;
gboolean is_key_event, in_root = FALSE; gboolean in_root = FALSE;
gint i = 0; gint i = 0;
/* XXX - for historical reasons that are now lost in the mists of time,
* key events are delivered regardless of whether an actor is set as
* reactive; this should be changed for 2.0.
*/
is_key_event = event->type == CLUTTER_KEY_PRESS ||
event->type == CLUTTER_KEY_RELEASE;
event_tree = g_ptr_array_sized_new (64); event_tree = g_ptr_array_sized_new (64);
g_ptr_array_set_free_func (event_tree, (GDestroyNotify) g_object_unref); g_ptr_array_set_free_func (event_tree, (GDestroyNotify) g_object_unref);
@ -19047,8 +19040,7 @@ _clutter_actor_handle_event (ClutterActor *self,
ClutterActor *parent = iter->priv->parent; ClutterActor *parent = iter->priv->parent;
if (CLUTTER_ACTOR_IS_REACTIVE (iter) || /* an actor must be reactive */ if (CLUTTER_ACTOR_IS_REACTIVE (iter) || /* an actor must be reactive */
parent == NULL || /* unless it's the stage */ parent == NULL) /* unless it's the stage */
is_key_event) /* or this is a key event */
{ {
/* keep a reference on the actor, so that it remains valid /* keep a reference on the actor, so that it remains valid
* for the duration of the signal emission * for the duration of the signal emission