mirror of
https://github.com/brl/mutter.git
synced 2025-02-02 14:53:03 +00:00
Add ClutterContainer::foreach_with_internals()
Bug 1517 - clutter_container_foreach_with_internals() This allows us to iterate over all children (for things like maintaining map/realize invariants) or only children that apps added and care about. Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
This commit is contained in:
parent
27bea43a4d
commit
4f663384c7
@ -449,7 +449,10 @@ clutter_container_get_children (ClutterContainer *container)
|
|||||||
* @callback: a function to be called for each child
|
* @callback: a function to be called for each child
|
||||||
* @user_data: data to be passed to the function, or %NULL
|
* @user_data: data to be passed to the function, or %NULL
|
||||||
*
|
*
|
||||||
* Calls @callback for each child of @container.
|
* 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.
|
||||||
*
|
*
|
||||||
* Since: 0.4
|
* Since: 0.4
|
||||||
*/
|
*/
|
||||||
@ -473,6 +476,41 @@ clutter_container_foreach (ClutterContainer *container,
|
|||||||
iface->foreach (container, callback, user_data);
|
iface->foreach (container, callback, user_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_container_foreach_with_internals:
|
||||||
|
* @container: a #ClutterContainer
|
||||||
|
* @callback: 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.
|
||||||
|
*
|
||||||
|
* Since: 1.0
|
||||||
|
*/
|
||||||
|
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);
|
||||||
|
if (!iface->foreach)
|
||||||
|
{
|
||||||
|
CLUTTER_CONTAINER_WARN_NOT_IMPLEMENTED (container, "foreach");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
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:
|
* clutter_container_raise_child:
|
||||||
* @container: a #ClutterContainer
|
* @container: a #ClutterContainer
|
||||||
|
@ -90,6 +90,10 @@ struct _ClutterContainerIface
|
|||||||
ClutterCallback callback,
|
ClutterCallback callback,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
|
|
||||||
|
void (* foreach_with_internals) (ClutterContainer *container,
|
||||||
|
ClutterCallback callback,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
/* child stacking */
|
/* child stacking */
|
||||||
void (* raise) (ClutterContainer *container,
|
void (* raise) (ClutterContainer *container,
|
||||||
ClutterActor *actor,
|
ClutterActor *actor,
|
||||||
@ -137,20 +141,22 @@ void clutter_container_remove_actor (ClutterContainer *container,
|
|||||||
void clutter_container_remove_valist (ClutterContainer *container,
|
void clutter_container_remove_valist (ClutterContainer *container,
|
||||||
ClutterActor *first_actor,
|
ClutterActor *first_actor,
|
||||||
va_list var_args);
|
va_list var_args);
|
||||||
GList * clutter_container_get_children (ClutterContainer *container);
|
GList * clutter_container_get_children (ClutterContainer *container);
|
||||||
void clutter_container_foreach (ClutterContainer *container,
|
void clutter_container_foreach (ClutterContainer *container,
|
||||||
ClutterCallback callback,
|
ClutterCallback callback,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
ClutterActor *clutter_container_find_child_by_name (ClutterContainer *container,
|
void clutter_container_foreach_with_internals (ClutterContainer *container,
|
||||||
const gchar *child_name);
|
ClutterCallback callback,
|
||||||
void clutter_container_raise_child (ClutterContainer *container,
|
gpointer user_data);
|
||||||
ClutterActor *actor,
|
ClutterActor *clutter_container_find_child_by_name (ClutterContainer *container,
|
||||||
ClutterActor *sibling);
|
const gchar *child_name);
|
||||||
void clutter_container_lower_child (ClutterContainer *container,
|
void clutter_container_raise_child (ClutterContainer *container,
|
||||||
ClutterActor *actor,
|
ClutterActor *actor,
|
||||||
ClutterActor *sibling);
|
ClutterActor *sibling);
|
||||||
void clutter_container_sort_depth_order (ClutterContainer *container);
|
void clutter_container_lower_child (ClutterContainer *container,
|
||||||
|
ClutterActor *actor,
|
||||||
|
ClutterActor *sibling);
|
||||||
|
void clutter_container_sort_depth_order (ClutterContainer *container);
|
||||||
|
|
||||||
|
|
||||||
GParamSpec * clutter_container_class_find_child_property (GObjectClass *klass,
|
GParamSpec * clutter_container_class_find_child_property (GObjectClass *klass,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user