void mnb_fancy_bin_set_child (MnbFancyBin *bin, ClutterActor *child) { MnbFancyBinPrivate *priv = bin->priv; if (priv->real_child) { clutter_clone_set_source (CLUTTER_CLONE (priv->child), NULL); clutter_clone_set_source (CLUTTER_CLONE (priv->clone), NULL); clutter_actor_remove_child (clutter_actor_get_parent(priv->real_child), priv->real_child); } priv->real_child = child; if (priv->real_child) { clutter_actor_add_child(CLUTTER_ACTOR (bin), priv->real_child); clutter_clone_set_source (CLUTTER_CLONE (priv->child), priv->real_child); clutter_clone_set_source (CLUTTER_CLONE (priv->clone), priv->real_child); } clutter_actor_queue_relayout (CLUTTER_ACTOR (bin)); }
static void clutter_clone_set_property (GObject *gobject, guint prop_id, const GValue *value, GParamSpec *pspec) { ClutterClone *self = CLUTTER_CLONE (gobject); switch (prop_id) { case PROP_SOURCE: clutter_clone_set_source (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } }