diff --git a/clutter/clutter/clutter-clone.c b/clutter/clutter/clutter-clone.c index 53dcb6cd0..40a3d53d5 100644 --- a/clutter/clutter/clutter-clone.c +++ b/clutter/clutter/clutter-clone.c @@ -252,6 +252,13 @@ clutter_clone_allocate (ClutterActor *self, if (priv->clone_source == NULL) return; + /* ClutterActor delays allocating until the actor is shown; however + * we cannot paint it correctly in that case, so force an allocation. + */ + if (clutter_actor_get_parent (priv->clone_source) != NULL && + !clutter_actor_has_allocation (priv->clone_source)) + clutter_actor_allocate_preferred_size (priv->clone_source, flags); + #if 0 /* XXX - this is wrong: ClutterClone cannot clone unparented * actors, as it will break all invariants