diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c index 7b8046910..0dc201a7a 100644 --- a/clutter/clutter-actor.c +++ b/clutter/clutter-actor.c @@ -10112,3 +10112,35 @@ _clutter_actor_set_queue_redraw_clip (ClutterActor *self, self->priv->oob_queue_redraw_clip = clip; } +/** + * clutter_actor_has_allocation: + * @self: a #ClutterActor + * + * Checks if the actor has an up-to-date allocation assigned to + * it. This means that the actor should have an allocation: it's + * visible and has a parent. It also means that there is no + * outstanding relayout request in progress for the actor or its + * children (There might be other outstanding layout requests in + * progress that will cause the actor to get a new allocation + * when the stage is laid out, however). + * + * If this function returns %FALSE, then the actor will normally + * be allocated before it is next drawn on the screen. + * + * Return value: %TRUE if the actor has an up-to-date allocation + * + * Since: 1.4 + */ +gboolean +clutter_actor_has_allocation (ClutterActor *self) +{ + ClutterActorPrivate *priv; + + g_return_val_if_fail (CLUTTER_IS_ACTOR (self), FALSE); + + priv = self->priv; + + return priv->parent_actor != NULL && + CLUTTER_ACTOR_IS_VISIBLE (self) && + !priv->needs_allocation; +} diff --git a/clutter/clutter-actor.h b/clutter/clutter-actor.h index 4bb46cd9e..b7ae817a6 100644 --- a/clutter/clutter-actor.h +++ b/clutter/clutter-actor.h @@ -562,6 +562,8 @@ ClutterTextDirection clutter_actor_get_text_direction (ClutterActor *sel void clutter_actor_push_internal (ClutterActor *self); void clutter_actor_pop_internal (ClutterActor *self); +gboolean clutter_actor_has_allocation (ClutterActor *self); + G_END_DECLS #endif /* __CLUTTER_ACTOR_H__ */ diff --git a/doc/reference/clutter/clutter-sections.txt b/doc/reference/clutter/clutter-sections.txt index ea2b494b4..7c65d53d4 100644 --- a/doc/reference/clutter/clutter-sections.txt +++ b/doc/reference/clutter/clutter-sections.txt @@ -314,6 +314,7 @@ clutter_actor_set_fixed_position_set clutter_actor_get_fixed_position_set clutter_actor_set_request_mode clutter_actor_get_request_mode +clutter_actor_has_allocation clutter_actor_set_geometry