diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c index 424144436..6a30c1c11 100644 --- a/clutter/clutter-actor.c +++ b/clutter/clutter-actor.c @@ -7564,3 +7564,28 @@ clutter_actor_allocate_preferred_size (ClutterActor *self, clutter_actor_allocate (self, &actor_box, absolute_origin_changed); } + +/** + * clutter_actor_grab_key_focus: + * @self: a #ClutterActor + * + * Sets the key focus of the #ClutterStage including @self + * to this #ClutterActor. + * + * Since: 1.0 + */ +void +clutter_actor_grab_key_focus (ClutterActor *self) +{ + ClutterActor *parent; + + g_return_if_fail (CLUTTER_IS_ACTOR (self)); + + parent = clutter_actor_get_parent (self); + if (!parent) + return; + + parent = clutter_actor_get_stage (self); + if (parent && CLUTTER_IS_STAGE (parent)) + clutter_stage_set_key_focus (CLUTTER_STAGE (parent), self); +} diff --git a/clutter/clutter-actor.h b/clutter/clutter-actor.h index e964a9ef0..1874e283b 100644 --- a/clutter/clutter-actor.h +++ b/clutter/clutter-actor.h @@ -561,6 +561,8 @@ void clutter_actor_apply_relative_transform_to_point (ClutterActor *self, gboolean clutter_actor_get_paint_visibility (ClutterActor *self); +void clutter_actor_grab_key_focus (ClutterActor *self); + G_END_DECLS #endif /* _HAVE_CLUTTER_ACTOR_H */