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.
This commit is contained in:
Emmanuele Bassi 2009-10-15 12:15:49 +01:00
parent adca939101
commit 4d153e4507

View File

@ -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);
}