From 430d1cf347beeaa619651f2a227d00e053b6b2da Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 11 Dec 2008 11:22:46 +0000 Subject: [PATCH] Add Actor::grab_key_focus() method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug 1003 - Add clutter_actor_take_key_focus() The grab_key_focus() method is just a simple wrapper around clutter_stage_take_key_focus() that removes the need to get the ClutterStage of an actor in order to set the key focus. Based on a patch by Xan López. Signed-off-by: Emmanuele Bassi Signed-off-by: Øyvind Kolås --- clutter/clutter-actor.c | 25 +++++++++++++++++++++++++ clutter/clutter-actor.h | 2 ++ 2 files changed, 27 insertions(+) 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 */