From 4d153e4507fdd8fc135998f771e1826a9b02e658 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 15 Oct 2009 12:15:49 +0100 Subject: [PATCH] layout, box: Clean up * Use g_list_foreach() instead of iterating over the list inside the destruction sequence, since we are causing the widgets to be implicitly removed from the list via the destroy() call. * Use g_signal_connect_swapped() and spare us from a callback. --- clutter/clutter-box.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/clutter/clutter-box.c b/clutter/clutter-box.c index 42ba18ec7..131327551 100644 --- a/clutter/clutter-box.c +++ b/clutter/clutter-box.c @@ -345,21 +345,13 @@ static void clutter_box_destroy (ClutterActor *actor) { ClutterBoxPrivate *priv = CLUTTER_BOX (actor)->priv; - GList *l; - for (l = priv->children; l != NULL; l = l->next) - clutter_actor_destroy (l->data); + /* destroy all our children */ + g_list_foreach (priv->children, (GFunc) clutter_actor_destroy, NULL); CLUTTER_ACTOR_CLASS (clutter_box_parent_class)->destroy (actor); } -static void -on_layout_changed (ClutterLayoutManager *manager, - ClutterActor *self) -{ - clutter_actor_queue_relayout (self); -} - static inline void set_layout_manager (ClutterBox *self, ClutterLayoutManager *manager) @@ -388,9 +380,9 @@ set_layout_manager (ClutterBox *self, CLUTTER_CONTAINER (self)); priv->changed_id = - g_signal_connect (priv->manager, "layout-changed", - G_CALLBACK (on_layout_changed), - self); + g_signal_connect_swapped (priv->manager, "layout-changed", + G_CALLBACK (clutter_actor_queue_relayout), + self); } clutter_actor_queue_relayout (CLUTTER_ACTOR (self)); @@ -574,7 +566,7 @@ clutter_box_set_layout_manager (ClutterBox *box, ClutterLayoutManager *manager) { g_return_if_fail (CLUTTER_IS_BOX (box)); - g_return_if_fail (manager == NULL || CLUTTER_IS_LAYOUT_MANAGER (manager)); + g_return_if_fail (CLUTTER_IS_LAYOUT_MANAGER (manager)); set_layout_manager (box, manager); }