From 543e2d3f0609864cebb1f1eaf258108abab50770 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 25 Feb 2010 12:39:24 +0000 Subject: [PATCH] container: Expose create and destroy ChildMeta methods It is conceivable that Container implementations might add children outside of the Container::add() implementation - e.g. for packing at a specific index. Since the addition (and removal) might happen outside the common path we need to expose all the API that is implicitly called by ClutterContainer when adding and removing a child - namely the ChildMeta creation and destruction. --- clutter/clutter-container.c | 44 ++++++++++++++++++++++-------- clutter/clutter-container.h | 4 +++ doc/reference/clutter/clutter-sections.txt | 2 ++ 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/clutter/clutter-container.c b/clutter/clutter-container.c index fc69fbc..756343e 100644 --- a/clutter/clutter-container.c +++ b/clutter/clutter-container.c @@ -93,12 +93,6 @@ static void create_child_meta (ClutterContainer *container, static void destroy_child_meta (ClutterContainer *container, ClutterActor *actor); -static void clutter_container_create_child_meta (ClutterContainer *container, - ClutterActor *actor); -static void clutter_container_destroy_child_meta (ClutterContainer *container, - ClutterActor *actor); - - static void clutter_container_base_init (gpointer g_iface) { @@ -780,7 +774,7 @@ clutter_container_get_child_meta (ClutterContainer *container, return NULL; } -/* +/** * clutter_container_create_child_meta: * @container: a #ClutterContainer * @actor: a #ClutterActor @@ -788,12 +782,25 @@ clutter_container_get_child_meta (ClutterContainer *container, * Creates the #ClutterChildMeta wrapping @actor inside the * @container, if the #ClutterContainerIface::child_meta_type * class member is not set to %G_TYPE_INVALID. + * + * This function is only useful when adding a #ClutterActor to + * a #ClutterContainer implementation outside of the + * #ClutterContainer::add() virtual function implementation. + * + * Applications should not call this function. + * + * Since: 1.2 */ -static void +void clutter_container_create_child_meta (ClutterContainer *container, ClutterActor *actor) { - ClutterContainerIface *iface = CLUTTER_CONTAINER_GET_IFACE (container); + ClutterContainerIface *iface; + + g_return_if_fail (CLUTTER_IS_CONTAINER (container)); + g_return_if_fail (CLUTTER_IS_ACTOR (container)); + + iface = CLUTTER_CONTAINER_GET_IFACE (container); if (iface->child_meta_type == G_TYPE_INVALID) return; @@ -804,19 +811,32 @@ clutter_container_create_child_meta (ClutterContainer *container, iface->create_child_meta (container, actor); } -/* +/** * clutter_container_destroy_child_meta: * @container: a #ClutterContainer * @actor: a #ClutterActor * * Destroys the #ClutterChildMeta wrapping @actor inside the * @container, if any. + * + * This function is only useful when removing a #ClutterActor to + * a #ClutterContainer implementation outside of the + * #ClutterContainer::add() virtual function implementation. + * + * Applications should not call this function. + * + * Since: 1.2 */ -static void +void clutter_container_destroy_child_meta (ClutterContainer *container, ClutterActor *actor) { - ClutterContainerIface *iface = CLUTTER_CONTAINER_GET_IFACE (container); + ClutterContainerIface *iface; + + g_return_if_fail (CLUTTER_IS_CONTAINER (container)); + g_return_if_fail (CLUTTER_IS_ACTOR (actor)); + + iface = CLUTTER_CONTAINER_GET_IFACE (container); if (iface->child_meta_type == G_TYPE_INVALID) return; diff --git a/clutter/clutter-container.h b/clutter/clutter-container.h index 083bba1..9afac84 100644 --- a/clutter/clutter-container.h +++ b/clutter/clutter-container.h @@ -169,6 +169,10 @@ GParamSpec * clutter_container_class_find_child_property (GObjectClass GParamSpec ** clutter_container_class_list_child_properties (GObjectClass *klass, guint *n_properties); +void clutter_container_create_child_meta (ClutterContainer *container, + ClutterActor *actor); +void clutter_container_destroy_child_meta (ClutterContainer *container, + ClutterActor *actor); ClutterChildMeta *clutter_container_get_child_meta (ClutterContainer *container, ClutterActor *actor); diff --git a/doc/reference/clutter/clutter-sections.txt b/doc/reference/clutter/clutter-sections.txt index ad69104..c570a43 100644 --- a/doc/reference/clutter/clutter-sections.txt +++ b/doc/reference/clutter/clutter-sections.txt @@ -205,6 +205,8 @@ clutter_container_child_set clutter_container_child_get +clutter_container_create_child_meta +clutter_container_destroy_child_meta clutter_container_get_child_meta -- 2.7.4