mirror of
https://github.com/brl/mutter.git
synced 2024-11-30 03:50:47 -05:00
box: Check before using the LayoutManager instance
A ClutterBox might not have a ClutterLayoutManager instance associated -- for instance, during destruction. We should check for one before calling methods on it.
This commit is contained in:
parent
81c8cf3e6d
commit
2cad7e24f0
@ -118,9 +118,10 @@ clutter_box_real_add (ClutterContainer *container,
|
|||||||
|
|
||||||
clutter_actor_set_parent (actor, CLUTTER_ACTOR (container));
|
clutter_actor_set_parent (actor, CLUTTER_ACTOR (container));
|
||||||
|
|
||||||
clutter_layout_manager_add_child_meta (priv->manager,
|
if (priv->manager != NULL)
|
||||||
container,
|
clutter_layout_manager_add_child_meta (priv->manager,
|
||||||
actor);
|
container,
|
||||||
|
actor);
|
||||||
|
|
||||||
clutter_actor_queue_relayout (actor);
|
clutter_actor_queue_relayout (actor);
|
||||||
|
|
||||||
@ -140,9 +141,10 @@ clutter_box_real_remove (ClutterContainer *container,
|
|||||||
priv->children = g_list_remove (priv->children, actor);
|
priv->children = g_list_remove (priv->children, actor);
|
||||||
clutter_actor_unparent (actor);
|
clutter_actor_unparent (actor);
|
||||||
|
|
||||||
clutter_layout_manager_remove_child_meta (priv->manager,
|
if (priv->manager != NULL)
|
||||||
container,
|
clutter_layout_manager_remove_child_meta (priv->manager,
|
||||||
actor);
|
container,
|
||||||
|
actor);
|
||||||
|
|
||||||
clutter_actor_queue_relayout (CLUTTER_ACTOR (container));
|
clutter_actor_queue_relayout (CLUTTER_ACTOR (container));
|
||||||
|
|
||||||
@ -277,7 +279,7 @@ clutter_box_real_get_preferred_width (ClutterActor *actor,
|
|||||||
/* if we don't have any children don't bother proxying the
|
/* if we don't have any children don't bother proxying the
|
||||||
* call to the layout manager instance
|
* call to the layout manager instance
|
||||||
*/
|
*/
|
||||||
if (priv->children == NULL)
|
if (priv->children == NULL || priv->manager == NULL)
|
||||||
{
|
{
|
||||||
if (min_width)
|
if (min_width)
|
||||||
*min_width = 0.0;
|
*min_width = 0.0;
|
||||||
@ -305,7 +307,7 @@ clutter_box_real_get_preferred_height (ClutterActor *actor,
|
|||||||
/* if we don't have any children don't bother proxying the
|
/* if we don't have any children don't bother proxying the
|
||||||
* call to the layout manager instance
|
* call to the layout manager instance
|
||||||
*/
|
*/
|
||||||
if (priv->children == NULL)
|
if (priv->children == NULL || priv->manager == NULL)
|
||||||
{
|
{
|
||||||
if (min_height)
|
if (min_height)
|
||||||
*min_height = 0.0;
|
*min_height = 0.0;
|
||||||
@ -333,7 +335,7 @@ clutter_box_real_allocate (ClutterActor *actor,
|
|||||||
klass = CLUTTER_ACTOR_CLASS (clutter_box_parent_class);
|
klass = CLUTTER_ACTOR_CLASS (clutter_box_parent_class);
|
||||||
klass->allocate (actor, allocation, flags);
|
klass->allocate (actor, allocation, flags);
|
||||||
|
|
||||||
if (priv->children == NULL)
|
if (priv->children == NULL || priv->manager == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
clutter_layout_manager_allocate (priv->manager,
|
clutter_layout_manager_allocate (priv->manager,
|
||||||
@ -349,7 +351,8 @@ clutter_box_destroy (ClutterActor *actor)
|
|||||||
/* destroy all our children */
|
/* destroy all our children */
|
||||||
g_list_foreach (priv->children, (GFunc) clutter_actor_destroy, NULL);
|
g_list_foreach (priv->children, (GFunc) clutter_actor_destroy, NULL);
|
||||||
|
|
||||||
CLUTTER_ACTOR_CLASS (clutter_box_parent_class)->destroy (actor);
|
if (CLUTTER_ACTOR_CLASS (clutter_box_parent_class)->destroy)
|
||||||
|
CLUTTER_ACTOR_CLASS (clutter_box_parent_class)->destroy (actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
|
Loading…
Reference in New Issue
Block a user