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) clutter_box_destroy (ClutterActor *actor)
{ {
ClutterBoxPrivate *priv = CLUTTER_BOX (actor)->priv; ClutterBoxPrivate *priv = CLUTTER_BOX (actor)->priv;
GList *l;
for (l = priv->children; l != NULL; l = l->next) /* destroy all our children */
clutter_actor_destroy (l->data); g_list_foreach (priv->children, (GFunc) clutter_actor_destroy, NULL);
CLUTTER_ACTOR_CLASS (clutter_box_parent_class)->destroy (actor); 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 static inline void
set_layout_manager (ClutterBox *self, set_layout_manager (ClutterBox *self,
ClutterLayoutManager *manager) ClutterLayoutManager *manager)
@ -388,9 +380,9 @@ set_layout_manager (ClutterBox *self,
CLUTTER_CONTAINER (self)); CLUTTER_CONTAINER (self));
priv->changed_id = priv->changed_id =
g_signal_connect (priv->manager, "layout-changed", g_signal_connect_swapped (priv->manager, "layout-changed",
G_CALLBACK (on_layout_changed), G_CALLBACK (clutter_actor_queue_relayout),
self); self);
} }
clutter_actor_queue_relayout (CLUTTER_ACTOR (self)); clutter_actor_queue_relayout (CLUTTER_ACTOR (self));
@ -574,7 +566,7 @@ clutter_box_set_layout_manager (ClutterBox *box,
ClutterLayoutManager *manager) ClutterLayoutManager *manager)
{ {
g_return_if_fail (CLUTTER_IS_BOX (box)); 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); set_layout_manager (box, manager);
} }