actor: Coalesce needs_[xy]_expand() into one method

Use the orientation enumeration instead of a per-axis method.
This commit is contained in:
Emmanuele Bassi 2012-04-20 12:45:54 +01:00
parent 807d77c0f3
commit 78aae84d43
4 changed files with 32 additions and 49 deletions

View File

@ -18318,7 +18318,7 @@ clutter_actor_set_x_expand (ClutterActor *self,
* *
* Retrieves the value set with clutter_actor_set_x_expand(). * Retrieves the value set with clutter_actor_set_x_expand().
* *
* See also: clutter_actor_needs_x_expand() * See also: clutter_actor_needs_expand()
* *
* Return value: %TRUE if the actor has been set to expand * Return value: %TRUE if the actor has been set to expand
* *
@ -18377,7 +18377,7 @@ clutter_actor_set_y_expand (ClutterActor *self,
* *
* Retrieves the value set with clutter_actor_set_y_expand(). * Retrieves the value set with clutter_actor_set_y_expand().
* *
* See also: clutter_actor_needs_y_expand() * See also: clutter_actor_needs_expand()
* *
* Return value: %TRUE if the actor has been set to expand * Return value: %TRUE if the actor has been set to expand
* *
@ -18402,11 +18402,18 @@ clutter_actor_compute_expand_recursive (ClutterActor *self,
x_expand = y_expand = FALSE; x_expand = y_expand = FALSE;
/* note that we don't recurse into children if we're already set to expand;
* this avoids traversing the whole actor tree, even if it may lead to some
* child left with the needs_compute_expand flag set.
*/
clutter_actor_iter_init (&iter, self); clutter_actor_iter_init (&iter, self);
while (clutter_actor_iter_next (&iter, &child)) while (clutter_actor_iter_next (&iter, &child))
{ {
x_expand = x_expand || clutter_actor_needs_x_expand (child); x_expand = x_expand ||
y_expand = y_expand || clutter_actor_needs_y_expand (child); clutter_actor_needs_expand (child, CLUTTER_ORIENTATION_HORIZONTAL);
y_expand = y_expand ||
clutter_actor_needs_expand (child, CLUTTER_ORIENTATION_VERTICAL);
} }
*x_expand_p = x_expand; *x_expand_p = x_expand;
@ -18459,24 +18466,26 @@ clutter_actor_compute_expand (ClutterActor *self)
} }
/** /**
* clutter_actor_needs_x_expand: * clutter_actor_needs_expand:
* @self: a #ClutterActor * @self: a #ClutterActor
* @orientation: the direction of expansion
* *
* Checks whether an actor, or any of its children, is set to expand * Checks whether an actor, or any of its children, is set to expand
* horizontally. * horizontally or vertically.
* *
* This function should only be called by layout managers that can * This function should only be called by layout managers that can
* assign extra space to their children. * assign extra space to their children.
* *
* If you want to know whether the actor was explicitly set to expand, * If you want to know whether the actor was explicitly set to expand,
* use clutter_actor_get_y_expand(). * use clutter_actor_get_x_expand() or clutter_actor_get_y_expand().
* *
* Return value: %TRUE if the actor should expand * Return value: %TRUE if the actor should expand
* *
* Since: 1.12 * Since: 1.12
*/ */
gboolean gboolean
clutter_actor_needs_x_expand (ClutterActor *self) clutter_actor_needs_expand (ClutterActor *self,
ClutterOrientation orientation)
{ {
g_return_val_if_fail (CLUTTER_IS_ACTOR (self), FALSE); g_return_val_if_fail (CLUTTER_IS_ACTOR (self), FALSE);
@ -18488,38 +18497,14 @@ clutter_actor_needs_x_expand (ClutterActor *self)
clutter_actor_compute_expand (self); clutter_actor_compute_expand (self);
return self->priv->needs_x_expand; switch (orientation)
} {
case CLUTTER_ORIENTATION_HORIZONTAL:
/** return self->priv->needs_x_expand;
* clutter_actor_needs_y_expand:
* @self: a #ClutterActor case CLUTTER_ORIENTATION_VERTICAL:
* return self->priv->needs_y_expand;
* Checks whether an actor, or any of its children, is set to expand }
* vertically.
* return FALSE;
* This function should only be called by layout managers that can
* assign extra space to their children.
*
* If you want to know whether the actor was explicitly set to expand,
* use clutter_actor_get_y_expand().
*
* Return value: %TRUE if the actor should expand
*
* Since: 1.12
*/
gboolean
clutter_actor_needs_y_expand (ClutterActor *self)
{
g_return_val_if_fail (CLUTTER_IS_ACTOR (self), FALSE);
if (!CLUTTER_ACTOR_IS_VISIBLE (self))
return FALSE;
if (CLUTTER_ACTOR_IN_DESTRUCTION (self))
return FALSE;
clutter_actor_compute_expand (self);
return self->priv->needs_x_expand;
} }

View File

@ -450,9 +450,8 @@ void clutter_actor_set_y_expand
CLUTTER_AVAILABLE_IN_1_12 CLUTTER_AVAILABLE_IN_1_12
gboolean clutter_actor_get_y_expand (ClutterActor *self); gboolean clutter_actor_get_y_expand (ClutterActor *self);
CLUTTER_AVAILABLE_IN_1_12 CLUTTER_AVAILABLE_IN_1_12
gboolean clutter_actor_needs_x_expand (ClutterActor *self); gboolean clutter_actor_needs_expand (ClutterActor *self,
CLUTTER_AVAILABLE_IN_1_12 ClutterOrientation orientation);
gboolean clutter_actor_needs_y_expand (ClutterActor *self);
/* Paint */ /* Paint */
void clutter_actor_set_clip (ClutterActor *self, void clutter_actor_set_clip (ClutterActor *self,

View File

@ -461,7 +461,7 @@ clutter_bin_layout_allocate (ClutterLayoutManager *manager,
child_alloc.x2 = available_w; child_alloc.x2 = available_w;
child_alloc.y2 = available_h; child_alloc.y2 = available_h;
if (clutter_actor_needs_x_expand (child)) if (clutter_actor_needs_expand (child, CLUTTER_ORIENTATION_HORIZONTAL))
{ {
ClutterActorAlign align; ClutterActorAlign align;
@ -475,7 +475,7 @@ clutter_bin_layout_allocate (ClutterLayoutManager *manager,
x_align = get_bin_alignment_factor (layer->x_align); x_align = get_bin_alignment_factor (layer->x_align);
} }
if (clutter_actor_needs_y_expand (child)) if (clutter_actor_needs_expand (child, CLUTTER_ORIENTATION_VERTICAL))
{ {
ClutterActorAlign align; ClutterActorAlign align;

View File

@ -192,8 +192,7 @@ clutter_actor_meta_set_name
clutter_actor_move_anchor_point clutter_actor_move_anchor_point
clutter_actor_move_anchor_point_from_gravity clutter_actor_move_anchor_point_from_gravity
clutter_actor_move_by clutter_actor_move_by
clutter_actor_needs_x_expand clutter_actor_needs_expand
clutter_actor_needs_y_expand
clutter_actor_new clutter_actor_new
clutter_actor_paint clutter_actor_paint
clutter_actor_pop_internal clutter_actor_pop_internal