diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c index 66e2812c8..5333fc452 100644 --- a/clutter/clutter-actor.c +++ b/clutter/clutter-actor.c @@ -9184,3 +9184,35 @@ clutter_actor_get_transformation_matrix (ClutterActor *self, CLUTTER_ACTOR_GET_CLASS (self)->apply_transform (self, matrix); } + +/** + * clutter_actor_is_in_clone_paint: + * @self: a #ClutterActor + * + * Checks whether @self is being currently painted by a #ClutterClone + * + * This function is useful only inside the ::paint virtual function + * implementations or within handlers for the #ClutterActor::paint + * signal + * + * This function should not be used by applications + * + * Return value: %TRUE if the #ClutterActor is currently being painted + * by a #ClutterClone, and %FALSE otherwise + * + * Since: 1.0 + */ +gboolean +clutter_actor_is_in_clone_paint (ClutterActor *self) +{ + g_return_val_if_fail (CLUTTER_IS_ACTOR (self), FALSE); + + /* XXX - keep in sync with the overrides set by ClutterClone: + * + * - opacity_parent != NULL + * - enable_model_view_transform == FALSE + */ + + return self->priv->opacity_parent != NULL && + !self->priv->enable_model_view_transform; +} diff --git a/clutter/clutter-actor.h b/clutter/clutter-actor.h index 72f7893da..18f776685 100644 --- a/clutter/clutter-actor.h +++ b/clutter/clutter-actor.h @@ -520,6 +520,8 @@ PangoLayout * clutter_actor_create_pango_layout (ClutterActor *self void clutter_actor_get_transformation_matrix (ClutterActor *self, CoglMatrix *matrix); +gboolean clutter_actor_is_in_clone_paint (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 109a66216..2e38c6be5 100644 --- a/doc/reference/clutter/clutter-sections.txt +++ b/doc/reference/clutter/clutter-sections.txt @@ -387,6 +387,7 @@ clutter_actor_grab_key_focus clutter_actor_get_pango_context clutter_actor_create_pango_context clutter_actor_create_pango_layout +clutter_actor_is_in_clone_paint ClutterActorBox