From ad4d475d3a6ed9a93344e10f8052a321b745c5c4 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 24 Aug 2012 08:46:59 +0100 Subject: [PATCH] 2.0: Remove deprecated ClutterContainer API --- clutter/clutter-bin-layout.c | 3 +- clutter/clutter-box-layout.c | 2 +- clutter/clutter-container.c | 757 +-------------------------------- clutter/clutter-container.h | 103 ++--- clutter/clutter-stage.c | 70 +-- clutter/clutter-table-layout.c | 2 +- 6 files changed, 38 insertions(+), 899 deletions(-) diff --git a/clutter/clutter-bin-layout.c b/clutter/clutter-bin-layout.c index de7370ee7..d7ad9bdd4 100644 --- a/clutter/clutter-bin-layout.c +++ b/clutter/clutter-bin-layout.c @@ -895,8 +895,7 @@ clutter_bin_layout_add (ClutterBinLayout *self, return; } - clutter_container_add_actor (priv->container, child); - + clutter_actor_add_child (CLUTTER_ACTOR (priv->container), child); manager = CLUTTER_LAYOUT_MANAGER (self); meta = clutter_layout_manager_get_child_meta (manager, priv->container, diff --git a/clutter/clutter-box-layout.c b/clutter/clutter-box-layout.c index a87b32bf2..c91d9718c 100644 --- a/clutter/clutter-box-layout.c +++ b/clutter/clutter-box-layout.c @@ -1841,7 +1841,7 @@ clutter_box_layout_pack (ClutterBoxLayout *layout, return; } - clutter_container_add_actor (priv->container, actor); + clutter_actor_add_child (CLUTTER_ACTOR (priv->container), actor); manager = CLUTTER_LAYOUT_MANAGER (layout); meta = clutter_layout_manager_get_child_meta (manager, diff --git a/clutter/clutter-container.c b/clutter/clutter-container.c index 8c64151fc..6633dd521 100644 --- a/clutter/clutter-container.c +++ b/clutter/clutter-container.c @@ -34,34 +34,14 @@ #include #include -#define CLUTTER_DISABLE_DEPRECATION_WARNINGS -#include "deprecated/clutter-container.h" - #include "clutter-actor-private.h" #include "clutter-child-meta.h" +#include "clutter-container.h" #include "clutter-debug.h" +#include "clutter-enum-types.h" #include "clutter-main.h" #include "clutter-marshal.h" #include "clutter-private.h" -#include "clutter-enum-types.h" - -#define CLUTTER_CONTAINER_WARN_NOT_IMPLEMENTED(container,vfunc) \ - G_STMT_START { \ - g_warning ("Container of type '%s' does not implement " \ - "the required ClutterContainer::%s virtual " \ - "function.", \ - G_OBJECT_TYPE_NAME ((container)), \ - (vfunc)); \ - } G_STMT_END - -#define CLUTTER_CONTAINER_NOTE_NOT_IMPLEMENTED(container,vfunc) \ - G_STMT_START { \ - CLUTTER_NOTE (ACTOR, "Container of type '%s' does not " \ - "implement the ClutterContainer::%s " \ - "virtual function.", \ - G_OBJECT_TYPE_NAME ((container)), \ - (vfunc)); \ - } G_STMT_END /** * SECTION:clutter-container @@ -71,13 +51,6 @@ * it provides some common API for notifying when a child actor is added * or removed, as well as the infrastructure for accessing child properties * through #ClutterChildMeta. - * - * Until Clutter 1.10, the #ClutterContainer interface was also the public - * API for implementing container actors; this part of the interface has - * been deprecated: #ClutterContainer has a default implementation which - * defers to #ClutterActor the child addition and removal, as well as the - * iteration. See the documentation of #ClutterContainerIface for the list - * of virtual functions that should be overridden. */ enum @@ -104,77 +77,7 @@ static void child_notify (ClutterContainer *container, typedef ClutterContainerIface ClutterContainerInterface; -G_DEFINE_INTERFACE (ClutterContainer, clutter_container, G_TYPE_OBJECT); - -static void -container_real_add (ClutterContainer *container, - ClutterActor *actor) -{ - clutter_actor_add_child (CLUTTER_ACTOR (container), actor); -} - -static void -container_real_remove (ClutterContainer *container, - ClutterActor *actor) -{ - clutter_actor_remove_child (CLUTTER_ACTOR (container), actor); -} - -typedef struct { - ClutterCallback callback; - gpointer data; -} ForeachClosure; - -static gboolean -foreach_cb (ClutterActor *actor, - gpointer data) -{ - ForeachClosure *clos = data; - - clos->callback (actor, clos->data); - - return TRUE; -} - -static void -container_real_foreach (ClutterContainer *container, - ClutterCallback callback, - gpointer user_data) -{ - ForeachClosure clos; - - clos.callback = callback; - clos.data = user_data; - - _clutter_actor_foreach_child (CLUTTER_ACTOR (container), - foreach_cb, - &clos); -} - -static void -container_real_raise (ClutterContainer *container, - ClutterActor *child, - ClutterActor *sibling) -{ - ClutterActor *self = CLUTTER_ACTOR (container); - - clutter_actor_set_child_above_sibling (self, child, sibling); -} - -static void -container_real_lower (ClutterContainer *container, - ClutterActor *child, - ClutterActor *sibling) -{ - ClutterActor *self = CLUTTER_ACTOR (container); - - clutter_actor_set_child_below_sibling (self, child, sibling); -} - -static void -container_real_sort_depth_order (ClutterContainer *container) -{ -} +G_DEFINE_INTERFACE (ClutterContainer, clutter_container, G_TYPE_OBJECT) static void clutter_container_default_init (ClutterContainerInterface *iface) @@ -182,7 +85,7 @@ clutter_container_default_init (ClutterContainerInterface *iface) GType iface_type = G_TYPE_FROM_INTERFACE (iface); quark_child_meta = - g_quark_from_static_string ("clutter-container-child-data"); + g_quark_from_static_string ("-clutter-container-child-data"); /** * ClutterContainer::actor-added: @@ -245,13 +148,6 @@ clutter_container_default_init (ClutterContainerInterface *iface) G_TYPE_NONE, 2, CLUTTER_TYPE_ACTOR, G_TYPE_PARAM); - iface->add = container_real_add; - iface->remove = container_real_remove; - iface->foreach = container_real_foreach; - iface->raise = container_real_raise; - iface->lower = container_real_lower; - iface->sort_depth_order = container_real_sort_depth_order; - iface->child_meta_type = G_TYPE_INVALID; iface->create_child_meta = create_child_meta; iface->destroy_child_meta = destroy_child_meta; @@ -259,651 +155,6 @@ clutter_container_default_init (ClutterContainerInterface *iface) iface->child_notify = child_notify; } -static inline void -container_add_actor (ClutterContainer *container, - ClutterActor *actor) -{ - ClutterActor *parent; - - parent = clutter_actor_get_parent (actor); - if (G_UNLIKELY (parent != NULL)) - { - g_warning ("Attempting to add actor of type '%s' to a " - "container of type '%s', but the actor has " - "already a parent of type '%s'.", - g_type_name (G_OBJECT_TYPE (actor)), - g_type_name (G_OBJECT_TYPE (container)), - g_type_name (G_OBJECT_TYPE (parent))); - return; - } - - clutter_container_create_child_meta (container, actor); - -#ifdef CLUTTER_ENABLE_DEBUG - if (G_UNLIKELY (_clutter_diagnostic_enabled ())) - { - ClutterContainerIface *iface = CLUTTER_CONTAINER_GET_IFACE (container); - - if (iface->add != container_real_add) - _clutter_diagnostic_message ("The ClutterContainer::add() virtual " - "function has been deprecated and it " - "should not be overridden by newly " - "written code"); - } -#endif /* CLUTTER_ENABLE_DEBUG */ - - CLUTTER_CONTAINER_GET_IFACE (container)->add (container, actor); -} - -static inline void -container_remove_actor (ClutterContainer *container, - ClutterActor *actor) -{ - ClutterActor *parent; - - parent = clutter_actor_get_parent (actor); - if (parent != CLUTTER_ACTOR (container)) - { - g_warning ("Attempting to remove actor of type '%s' from " - "group of class '%s', but the container is not " - "the actor's parent.", - g_type_name (G_OBJECT_TYPE (actor)), - g_type_name (G_OBJECT_TYPE (container))); - return; - } - - clutter_container_destroy_child_meta (container, actor); - -#ifdef CLUTTER_ENABLE_DEBUG - if (G_UNLIKELY (_clutter_diagnostic_enabled ())) - { - ClutterContainerIface *iface = CLUTTER_CONTAINER_GET_IFACE (container); - - if (iface->remove != container_real_remove) - _clutter_diagnostic_message ("The ClutterContainer::remove() virtual " - "function has been deprecated and it " - "should not be overridden by newly " - "written code"); - } -#endif /* CLUTTER_ENABLE_DEBUG */ - - CLUTTER_CONTAINER_GET_IFACE (container)->remove (container, actor); -} - -static inline void -container_add_valist (ClutterContainer *container, - ClutterActor *first_actor, - va_list args) -{ - ClutterActor *actor = first_actor; - - while (actor != NULL) - { - container_add_actor (container, actor); - actor = va_arg (args, ClutterActor *); - } -} - -static inline void -container_remove_valist (ClutterContainer *container, - ClutterActor *first_actor, - va_list args) -{ - ClutterActor *actor = first_actor; - - while (actor != NULL) - { - container_remove_actor (container, actor); - actor = va_arg (args, ClutterActor *); - } -} - -/** - * clutter_container_add: (skip) - * @container: a #ClutterContainer - * @first_actor: the first #ClutterActor to add - * @...: %NULL terminated list of actors to add - * - * Adds a list of #ClutterActors to @container. Each time and - * actor is added, the "actor-added" signal is emitted. Each actor should - * be parented to @container, which takes a reference on the actor. You - * cannot add a #ClutterActor to more than one #ClutterContainer. - * - * This function will call #ClutterContainerIface.add(), which is a - * deprecated virtual function. The default implementation will - * call clutter_actor_add_child(). - * - * Since: 0.4 - * - * Deprecated: 1.10: Use clutter_actor_add_child() instead. - */ -void -clutter_container_add (ClutterContainer *container, - ClutterActor *first_actor, - ...) -{ - va_list args; - - g_return_if_fail (CLUTTER_IS_CONTAINER (container)); - g_return_if_fail (CLUTTER_IS_ACTOR (first_actor)); - - va_start (args, first_actor); - container_add_valist (container, first_actor, args); - va_end (args); -} - -/** - * clutter_container_add_actor: - * @container: a #ClutterContainer - * @actor: the first #ClutterActor to add - * - * Adds a #ClutterActor to @container. This function will emit the - * "actor-added" signal. The actor should be parented to - * @container. You cannot add a #ClutterActor to more than one - * #ClutterContainer. - * - * This function will call #ClutterContainerIface.add(), which is a - * deprecated virtual function. The default implementation will - * call clutter_actor_add_child(). - * - * Virtual: add - * - * Since: 0.4 - * - * Deprecated: 1.10: Use clutter_actor_add_child() instead. - */ -void -clutter_container_add_actor (ClutterContainer *container, - ClutterActor *actor) -{ - g_return_if_fail (CLUTTER_IS_CONTAINER (container)); - g_return_if_fail (CLUTTER_IS_ACTOR (actor)); - - container_add_actor (container, actor); -} - -/** - * clutter_container_add_valist: (skip) - * @container: a #ClutterContainer - * @first_actor: the first #ClutterActor to add - * @var_args: list of actors to add, followed by %NULL - * - * Alternative va_list version of clutter_container_add(). - * - * This function will call #ClutterContainerIface.add(), which is a - * deprecated virtual function. The default implementation will - * call clutter_actor_add_child(). - * - * Since: 0.4 - * - * Deprecated: 1.10: Use clutter_actor_add_child() instead. - */ -void -clutter_container_add_valist (ClutterContainer *container, - ClutterActor *first_actor, - va_list var_args) -{ - g_return_if_fail (CLUTTER_IS_CONTAINER (container)); - g_return_if_fail (CLUTTER_IS_ACTOR (first_actor)); - - container_add_valist (container, first_actor, var_args); -} - -/** - * clutter_container_remove: (skip) - * @container: a #ClutterContainer - * @first_actor: first #ClutterActor to remove - * @...: a %NULL-terminated list of actors to remove - * - * Removes a %NULL terminated list of #ClutterActors from - * @container. Each actor should be unparented, so if you want to keep it - * around you must hold a reference to it yourself, using g_object_ref(). - * Each time an actor is removed, the "actor-removed" signal is - * emitted by @container. - * - * This function will call #ClutterContainerIface.remove(), which is a - * deprecated virtual function. The default implementation will call - * clutter_actor_remove_child(). - * - * Since: 0.4 - * - * Deprecated: 1.10: Use clutter_actor_remove_child() instead. - */ -void -clutter_container_remove (ClutterContainer *container, - ClutterActor *first_actor, - ...) -{ - va_list var_args; - - g_return_if_fail (CLUTTER_IS_CONTAINER (container)); - g_return_if_fail (CLUTTER_IS_ACTOR (first_actor)); - - va_start (var_args, first_actor); - container_remove_valist (container, first_actor, var_args); - va_end (var_args); -} - -/** - * clutter_container_remove_actor: - * @container: a #ClutterContainer - * @actor: a #ClutterActor - * - * Removes @actor from @container. The actor should be unparented, so - * if you want to keep it around you must hold a reference to it - * yourself, using g_object_ref(). When the actor has been removed, - * the "actor-removed" signal is emitted by @container. - * - * This function will call #ClutterContainerIface.remove(), which is a - * deprecated virtual function. The default implementation will call - * clutter_actor_remove_child(). - * - * Virtual: remove - * - * Since: 0.4 - * - * Deprecated: 1.10: Use clutter_actor_remove_child() instead. - */ -void -clutter_container_remove_actor (ClutterContainer *container, - ClutterActor *actor) -{ - g_return_if_fail (CLUTTER_IS_CONTAINER (container)); - g_return_if_fail (CLUTTER_IS_ACTOR (actor)); - - container_remove_actor (container, actor); -} - -/** - * clutter_container_remove_valist: (skip) - * @container: a #ClutterContainer - * @first_actor: the first #ClutterActor to add - * @var_args: list of actors to remove, followed by %NULL - * - * Alternative va_list version of clutter_container_remove(). - * - * This function will call #ClutterContainerIface.remove(), which is a - * deprecated virtual function. The default implementation will call - * clutter_actor_remove_child(). - * - * Since: 0.4 - * - * Deprecated: 1.10: Use clutter_actor_remove_child() instead. - */ -void -clutter_container_remove_valist (ClutterContainer *container, - ClutterActor *first_actor, - va_list var_args) -{ - g_return_if_fail (CLUTTER_IS_CONTAINER (container)); - g_return_if_fail (CLUTTER_IS_ACTOR (first_actor)); - - container_remove_valist (container, first_actor, var_args); -} - -static void -get_children_cb (ClutterActor *child, - gpointer data) -{ - GList **children = data; - - *children = g_list_prepend (*children, child); -} - -/** - * clutter_container_get_children: - * @container: a #ClutterContainer - * - * Retrieves all the children of @container. - * - * Return value: (element-type Clutter.Actor) (transfer container): a list - * of #ClutterActors. Use g_list_free() on the returned - * list when done. - * - * Since: 0.4 - * - * Deprecated: 1.10: Use clutter_actor_get_children() instead. - */ -GList * -clutter_container_get_children (ClutterContainer *container) -{ - GList *retval; - - g_return_val_if_fail (CLUTTER_IS_CONTAINER (container), NULL); - - retval = NULL; - clutter_container_foreach (container, get_children_cb, &retval); - - return g_list_reverse (retval); -} - -/** - * clutter_container_foreach: - * @container: a #ClutterContainer - * @callback: (scope call): a function to be called for each child - * @user_data: data to be passed to the function, or %NULL - * - * Calls @callback for each child of @container that was added - * by the application (with clutter_container_add_actor()). Does - * not iterate over "internal" children that are part of the - * container's own implementation, if any. - * - * This function calls the #ClutterContainerIface.foreach() - * virtual function, which has been deprecated. - * - * Since: 0.4 - * - * Deprecated: 1.10: Use clutter_actor_get_first_child() or - * clutter_actor_get_last_child() to retrieve the beginning of - * the list of children, and clutter_actor_get_next_sibling() - * and clutter_actor_get_previous_sibling() to iterate over it; - * alternatively, use the #ClutterActorIter API. - */ -void -clutter_container_foreach (ClutterContainer *container, - ClutterCallback callback, - gpointer user_data) -{ - g_return_if_fail (CLUTTER_IS_CONTAINER (container)); - g_return_if_fail (callback != NULL); - -#ifdef CLUTTER_ENABLE_DEBUG - if (G_UNLIKELY (_clutter_diagnostic_enabled ())) - { - ClutterContainerIface *iface = CLUTTER_CONTAINER_GET_IFACE (container); - - if (iface->foreach != container_real_foreach) - _clutter_diagnostic_message ("The ClutterContainer::foreach() " - "virtual function has been deprecated " - "and it should not be overridden by " - "newly written code"); - } -#endif /* CLUTTER_ENABLE_DEBUG */ - - CLUTTER_CONTAINER_GET_IFACE (container)->foreach (container, - callback, - user_data); -} - -/** - * clutter_container_foreach_with_internals: - * @container: a #ClutterContainer - * @callback: (scope call): a function to be called for each child - * @user_data: data to be passed to the function, or %NULL - * - * Calls @callback for each child of @container, including "internal" - * children built in to the container itself that were never added - * by the application. - * - * This function calls the #ClutterContainerIface.foreach_with_internals() - * virtual function, which has been deprecated. - * - * Since: 1.0 - * - * Deprecated: 1.10: See clutter_container_foreach(). - */ -void -clutter_container_foreach_with_internals (ClutterContainer *container, - ClutterCallback callback, - gpointer user_data) -{ - ClutterContainerIface *iface; - - g_return_if_fail (CLUTTER_IS_CONTAINER (container)); - g_return_if_fail (callback != NULL); - - iface = CLUTTER_CONTAINER_GET_IFACE (container); - -#ifdef CLUTTER_ENABLE_DEBUG - if (G_UNLIKELY (_clutter_diagnostic_enabled ())) - { - if (iface->foreach_with_internals != NULL) - _clutter_diagnostic_message ("The ClutterContainer::foreach_with_internals() " - "virtual function has been deprecated " - "and it should not be overridden by " - "newly written code"); - } -#endif /* CLUTTER_ENABLE_DEBUG */ - - if (iface->foreach_with_internals != NULL) - iface->foreach_with_internals (container, callback, user_data); - else - iface->foreach (container, callback, user_data); -} - -/** - * clutter_container_raise_child: - * @container: a #ClutterContainer - * @actor: the actor to raise - * @sibling: (allow-none): the sibling to raise to, or %NULL to raise - * to the top - * - * Raises @actor to @sibling level, in the depth ordering. - * - * This function calls the #ClutterContainerIface.raise() virtual function, - * which has been deprecated. The default implementation will call - * clutter_actor_set_child_above_sibling(). - * - * Virtual: raise - * - * Since: 0.6 - * - * Deprecated: 1.10: Use clutter_actor_set_child_above_sibling() instead. - */ -void -clutter_container_raise_child (ClutterContainer *container, - ClutterActor *actor, - ClutterActor *sibling) -{ - ClutterContainerIface *iface; - ClutterActor *self; - - g_return_if_fail (CLUTTER_IS_CONTAINER (container)); - g_return_if_fail (CLUTTER_IS_ACTOR (actor)); - g_return_if_fail (sibling == NULL || CLUTTER_IS_ACTOR (sibling)); - - if (actor == sibling) - return; - - self = CLUTTER_ACTOR (container); - - if (clutter_actor_get_parent (actor) != self) - { - g_warning ("Actor of type '%s' is not a child of the container " - "of type '%s'", - g_type_name (G_OBJECT_TYPE (actor)), - g_type_name (G_OBJECT_TYPE (container))); - return; - } - - if (sibling != NULL && - clutter_actor_get_parent (sibling) != self) - { - g_warning ("Actor of type '%s' is not a child of the container " - "of type '%s'", - g_type_name (G_OBJECT_TYPE (sibling)), - g_type_name (G_OBJECT_TYPE (container))); - return; - } - - iface = CLUTTER_CONTAINER_GET_IFACE (container); - -#ifdef CLUTTER_ENABLE_DEBUG - if (G_UNLIKELY (_clutter_diagnostic_enabled ())) - { - if (iface->raise != container_real_raise) - _clutter_diagnostic_message ("The ClutterContainer::raise() " - "virtual function has been deprecated " - "and it should not be overridden by " - "newly written code"); - } -#endif /* CLUTTER_ENABLE_DEBUG */ - - iface->raise (container, actor, sibling); -} - -/** - * clutter_container_lower_child: - * @container: a #ClutterContainer - * @actor: the actor to raise - * @sibling: (allow-none): the sibling to lower to, or %NULL to lower - * to the bottom - * - * Lowers @actor to @sibling level, in the depth ordering. - * - * This function calls the #ClutterContainerIface.lower() virtual function, - * which has been deprecated. The default implementation will call - * clutter_actor_set_child_below_sibling(). - * - * Virtual: lower - * - * Since: 0.6 - * - * Deprecated: 1.10: Use clutter_actor_set_child_below_sibling() instead. - */ -void -clutter_container_lower_child (ClutterContainer *container, - ClutterActor *actor, - ClutterActor *sibling) -{ - ClutterContainerIface *iface; - ClutterActor *self; - - g_return_if_fail (CLUTTER_IS_CONTAINER (container)); - g_return_if_fail (CLUTTER_IS_ACTOR (actor)); - g_return_if_fail (sibling == NULL || CLUTTER_IS_ACTOR (sibling)); - - if (actor == sibling) - return; - - self = CLUTTER_ACTOR (container); - - if (clutter_actor_get_parent (actor) != self) - { - g_warning ("Actor of type '%s' is not a child of the container " - "of type '%s'", - g_type_name (G_OBJECT_TYPE (actor)), - g_type_name (G_OBJECT_TYPE (container))); - return; - } - - if (sibling != NULL&& - clutter_actor_get_parent (sibling) != self) - { - g_warning ("Actor of type '%s' is not a child of the container " - "of type '%s'", - g_type_name (G_OBJECT_TYPE (sibling)), - g_type_name (G_OBJECT_TYPE (container))); - return; - } - - iface = CLUTTER_CONTAINER_GET_IFACE (container); - -#ifdef CLUTTER_ENABLE_DEBUG - if (G_UNLIKELY (_clutter_diagnostic_enabled ())) - { - if (iface->lower != container_real_lower) - _clutter_diagnostic_message ("The ClutterContainer::lower() " - "virtual function has been deprecated " - "and it should not be overridden by " - "newly written code"); - } -#endif /* CLUTTER_ENABLE_DEBUG */ - - iface->lower (container, actor, sibling); -} - -/** - * clutter_container_sort_depth_order: - * @container: a #ClutterContainer - * - * Sorts a container's children using their depth. This function should not - * be normally used by applications. - * - * Since: 0.6 - * - * Deprecated: 1.10: The #ClutterContainerIface.sort_depth_order() virtual - * function should not be used any more; the default implementation in - * #ClutterContainer does not do anything. - */ -void -clutter_container_sort_depth_order (ClutterContainer *container) -{ - ClutterContainerIface *iface; - - g_return_if_fail (CLUTTER_IS_CONTAINER (container)); - - iface = CLUTTER_CONTAINER_GET_IFACE (container); - -#ifdef CLUTTER_ENABLE_DEBUG - if (G_UNLIKELY (_clutter_diagnostic_enabled ())) - { - if (iface->sort_depth_order != container_real_sort_depth_order) - _clutter_diagnostic_message ("The ClutterContainer::sort_depth_order() " - "virtual function has been deprecated " - "and it should not be overridden by " - "newly written code"); - } -#endif /* CLUTTER_ENABLE_DEBUG */ - - iface->sort_depth_order (container); -} - -/** - * clutter_container_find_child_by_name: - * @container: a #ClutterContainer - * @child_name: the name of the requested child. - * - * Finds a child actor of a container by its name. Search recurses - * into any child container. - * - * Return value: (transfer none): The child actor with the requested name, - * or %NULL if no actor with that name was found. - * - * Since: 0.6 - */ -ClutterActor * -clutter_container_find_child_by_name (ClutterContainer *container, - const gchar *child_name) -{ - GList *children; - GList *iter; - ClutterActor *actor = NULL; - - g_return_val_if_fail (CLUTTER_IS_CONTAINER (container), NULL); - g_return_val_if_fail (child_name != NULL, NULL); - - children = clutter_container_get_children (container); - - for (iter = children; iter; iter = g_list_next (iter)) - { - ClutterActor *a; - const gchar *iter_name; - - a = CLUTTER_ACTOR (iter->data); - iter_name = clutter_actor_get_name (a); - - if (iter_name && !strcmp (iter_name, child_name)) - { - actor = a; - break; - } - - if (CLUTTER_IS_CONTAINER (a)) - { - ClutterContainer *c = CLUTTER_CONTAINER (a); - - actor = clutter_container_find_child_by_name (c, child_name); - if (actor) - break; - } - } - - g_list_free (children); - - return actor; -} - static ClutterChildMeta * get_child_meta (ClutterContainer *container, ClutterActor *actor) diff --git a/clutter/clutter-container.h b/clutter/clutter-container.h index b7e3f2b6c..467300927 100644 --- a/clutter/clutter-container.h +++ b/clutter/clutter-container.h @@ -55,25 +55,6 @@ typedef struct _ClutterContainerIface ClutterContainerIface; /** * ClutterContainerIface: - * @add: virtual function for adding an actor to the container. This virtual - * function is deprecated, and it should not be overridden. - * @remove: virtual function for removing an actor from the container. This - * virtual function is deprecated, and it should not be overridden. - * @foreach: virtual function for iterating over the container's children. - * This virtual function is deprecated, and it should not be overridden. - * @foreach_with_internals: virtual functions for iterating over the - * container's children, both added using the #ClutterContainer API - * and internal children. The implementation of this virtual function - * is required only if the #ClutterContainer implementation has - * internal children. This virtual function is deprecated, and it should - * not be overridden. - * @raise: virtual function for raising a child. This virtual function is - * deprecated and it should not be overridden. - * @lower: virtual function for lowering a child. This virtual function is - * deprecated and it should not be overridden. - * @sort_depth_order: virtual function for sorting the children of a - * container depending on their depth. This virtual function is deprecated - * and it should not be overridden. * @child_meta_type: The GType used for storing auxiliary information about * each of the containers children. * @create_child_meta: virtual function that gets called for each added @@ -100,27 +81,6 @@ struct _ClutterContainerIface GTypeInterface g_iface; /*< public >*/ - void (* add) (ClutterContainer *container, - ClutterActor *actor); - void (* remove) (ClutterContainer *container, - ClutterActor *actor); - void (* foreach) (ClutterContainer *container, - ClutterCallback callback, - gpointer user_data); - - void (* foreach_with_internals) (ClutterContainer *container, - ClutterCallback callback, - gpointer user_data); - - /* child stacking */ - void (* raise) (ClutterContainer *container, - ClutterActor *actor, - ClutterActor *sibling); - void (* lower) (ClutterContainer *container, - ClutterActor *actor, - ClutterActor *sibling); - void (* sort_depth_order) (ClutterContainer *container); - /* ClutterChildMeta management */ GType child_meta_type; void (* create_child_meta) (ClutterContainer *container, @@ -141,43 +101,40 @@ struct _ClutterContainerIface GParamSpec *pspec); }; -GType clutter_container_get_type (void) G_GNUC_CONST; +GType clutter_container_get_type (void) G_GNUC_CONST; -ClutterActor *clutter_container_find_child_by_name (ClutterContainer *container, - const gchar *child_name); +GParamSpec * clutter_container_class_find_child_property (GObjectClass *klass, + const gchar *property_name); +GParamSpec ** clutter_container_class_list_child_properties (GObjectClass *klass, + guint *n_properties); -GParamSpec * clutter_container_class_find_child_property (GObjectClass *klass, - const gchar *property_name); -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); -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); +void clutter_container_child_set_property (ClutterContainer *container, + ClutterActor *child, + const gchar * property, + const GValue *value); +void clutter_container_child_get_property (ClutterContainer *container, + ClutterActor *child, + const gchar *property, + GValue *value); +void clutter_container_child_set (ClutterContainer *container, + ClutterActor *actor, + const gchar *first_prop, + ...) G_GNUC_NULL_TERMINATED; +void clutter_container_child_get (ClutterContainer *container, + ClutterActor *actor, + const gchar *first_prop, + ...) G_GNUC_NULL_TERMINATED; -void clutter_container_child_set_property (ClutterContainer *container, - ClutterActor *child, - const gchar * property, - const GValue *value); -void clutter_container_child_get_property (ClutterContainer *container, - ClutterActor *child, - const gchar *property, - GValue *value); -void clutter_container_child_set (ClutterContainer *container, - ClutterActor *actor, - const gchar *first_prop, - ...) G_GNUC_NULL_TERMINATED; -void clutter_container_child_get (ClutterContainer *container, - ClutterActor *actor, - const gchar *first_prop, - ...) G_GNUC_NULL_TERMINATED; - -void clutter_container_child_notify (ClutterContainer *container, - ClutterActor *child, - GParamSpec *pspec); +void clutter_container_child_notify (ClutterContainer *container, + ClutterActor *child, + GParamSpec *pspec); G_END_DECLS diff --git a/clutter/clutter-stage.c b/clutter/clutter-stage.c index cec955d53..322fcfb1b 100644 --- a/clutter/clutter-stage.c +++ b/clutter/clutter-stage.c @@ -79,11 +79,7 @@ #include "cogl/cogl.h" -static void clutter_container_iface_init (ClutterContainerIface *iface); - -G_DEFINE_TYPE_WITH_CODE (ClutterStage, clutter_stage, CLUTTER_TYPE_ACTOR, - G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTAINER, - clutter_container_iface_init)) +G_DEFINE_TYPE (ClutterStage, clutter_stage, CLUTTER_TYPE_ACTOR) #define CLUTTER_STAGE_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE ((obj), CLUTTER_TYPE_STAGE, ClutterStagePrivate)) @@ -210,70 +206,6 @@ static const ClutterColor default_stage_color = { 255, 255, 255, 255 }; static void _clutter_stage_maybe_finish_queue_redraws (ClutterStage *stage); static void free_queue_redraw_entry (ClutterStageQueueRedrawEntry *entry); -static void -clutter_stage_real_add (ClutterContainer *container, - ClutterActor *child) -{ - clutter_actor_add_child (CLUTTER_ACTOR (container), child); -} - -static void -clutter_stage_real_remove (ClutterContainer *container, - ClutterActor *child) -{ - clutter_actor_remove_child (CLUTTER_ACTOR (container), child); -} - -static void -clutter_stage_real_foreach (ClutterContainer *container, - ClutterCallback callback, - gpointer user_data) -{ - ClutterActorIter iter; - ClutterActor *child; - - clutter_actor_iter_init (&iter, CLUTTER_ACTOR (container)); - - while (clutter_actor_iter_next (&iter, &child)) - callback (child, user_data); -} - -static void -clutter_stage_real_raise (ClutterContainer *container, - ClutterActor *child, - ClutterActor *sibling) -{ - clutter_actor_set_child_above_sibling (CLUTTER_ACTOR (container), - child, - sibling); -} - -static void -clutter_stage_real_lower (ClutterContainer *container, - ClutterActor *child, - ClutterActor *sibling) -{ - clutter_actor_set_child_below_sibling (CLUTTER_ACTOR (container), - child, - sibling); -} - -static void -clutter_stage_real_sort_depth_order (ClutterContainer *container) -{ -} - -static void -clutter_container_iface_init (ClutterContainerIface *iface) -{ - iface->add = clutter_stage_real_add; - iface->remove = clutter_stage_real_remove; - iface->foreach = clutter_stage_real_foreach; - iface->raise = clutter_stage_real_raise; - iface->lower = clutter_stage_real_lower; - iface->sort_depth_order = clutter_stage_real_sort_depth_order; -} - static void clutter_stage_get_preferred_width (ClutterActor *self, gfloat for_height, diff --git a/clutter/clutter-table-layout.c b/clutter/clutter-table-layout.c index 9927ad59a..eff66f03f 100644 --- a/clutter/clutter-table-layout.c +++ b/clutter/clutter-table-layout.c @@ -1896,7 +1896,7 @@ clutter_table_layout_pack (ClutterTableLayout *layout, update_row_col (CLUTTER_TABLE_LAYOUT (layout), priv->container); - clutter_container_add_actor (priv->container, actor); + clutter_actor_add_child (CLUTTER_ACTOR (priv->container), actor); manager = CLUTTER_LAYOUT_MANAGER (layout); meta = clutter_layout_manager_get_child_meta (manager,