mirror of
https://github.com/brl/mutter.git
synced 2025-03-25 04:33:52 +00:00
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:
parent
adca939101
commit
4d153e4507
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user