+2008-05-23 Emmanuele Bassi <ebassi@openedhand.com>
+
+ Bug #928 - Reparenting a child that itself is a container
+ doesn't work
+
+ * clutter/clutter-actor.c (clutter_actor_set_parent): Realize
+ an actor when setting its parent, if the parent is realized.
+
+ * clutter/clutter-group.c:
+ (clutter_group_realize), (clutter_group_class_init): Add the
+ missing implementation of the ::realize() virtual function; this
+ makes sure that the children of a Group are realized if the Group
+ is realized. (#928)
+
2008-05-21 Neil Roberts <neil@o-hand.com>
* clutter/cogl/gl/cogl.c (error_string):
self->priv->parent_actor = parent;
g_signal_emit (self, actor_signals[PARENT_SET], 0, NULL);
- if (self->priv->show_on_set_parent == TRUE)
- clutter_actor_show (self);
-
- /* FIXME: below likely not needed */
if (CLUTTER_ACTOR_IS_REALIZED (self->priv->parent_actor))
clutter_actor_realize (self);
+ if (self->priv->show_on_set_parent)
+ clutter_actor_show (self);
+
if (CLUTTER_ACTOR_IS_VISIBLE (self->priv->parent_actor) &&
CLUTTER_ACTOR_IS_VISIBLE (self))
{
}
static void
+clutter_group_realize (ClutterActor *actor)
+{
+ clutter_container_foreach (CLUTTER_CONTAINER (actor),
+ CLUTTER_CALLBACK (clutter_actor_realize),
+ NULL);
+}
+
+static void
clutter_group_unrealize (ClutterActor *actor)
{
clutter_container_foreach (CLUTTER_CONTAINER (actor),
actor_class->hide_all = clutter_group_real_hide_all;
actor_class->request_coords = clutter_group_request_coords;
actor_class->query_coords = clutter_group_query_coords;
+ actor_class->realize = clutter_group_realize;
actor_class->unrealize = clutter_group_unrealize;
/**