diff --git a/clutter/clutter-actor-private.h b/clutter/clutter-actor-private.h index 3af853f4f..e02eefe1d 100644 --- a/clutter/clutter-actor-private.h +++ b/clutter/clutter-actor-private.h @@ -108,6 +108,38 @@ typedef ClutterActorTraverseVisitFlags (*ClutterTraverseCallback) (ClutterActor typedef gboolean (*ClutterForeachCallback) (ClutterActor *actor, gpointer user_data); +typedef struct _ClutterLayoutInfo ClutterLayoutInfo; + +/*< private > + * ClutterLayoutInfo: + * @fixed_x: the fixed position of the actor, set using clutter_actor_set_x() + * @fixed_y: the fixed position of the actor, set using clutter_actor_set_y() + * @margin: the composed margin of the actor + * @x_expand: whether the actor should expand horizontally + * @y_expand: whether the actor should expand vertically + * @x_align: the horizontal alignment, if the actor expands horizontally + * @y_align: the vertical alignment, if the actor expands vertically + * + * Ancillary layout information for an actor. + */ +struct _ClutterLayoutInfo +{ + /* fixed position coordinates */ + float fixed_x; + float fixed_y; + + ClutterMargin margin; + + guint x_expand : 1; + guint y_expand : 1; + + guint x_align : 4; + guint y_align : 4; +}; + +const ClutterLayoutInfo * _clutter_actor_get_layout_info_or_defaults (ClutterActor *self); +ClutterLayoutInfo * _clutter_actor_get_layout_info (ClutterActor *self); + gint _clutter_actor_get_n_children (ClutterActor *self); gboolean _clutter_actor_foreach_child (ClutterActor *self, ClutterForeachCallback callback, diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c index b6f00e570..cb7902e7a 100644 --- a/clutter/clutter-actor.c +++ b/clutter/clutter-actor.c @@ -293,8 +293,11 @@ #include "config.h" #endif +/* for ClutterShader */ #define CLUTTER_DISABLE_DEPRECATION_WARNINGS +#include + #include "cogl/cogl.h" #include "clutter-actor-private.h" @@ -378,22 +381,6 @@ typedef enum { */ } MapStateChange; -typedef struct _LayoutInfo LayoutInfo; -struct _LayoutInfo -{ - /* fixed position coordinates */ - float fixed_x; - float fixed_y; - - ClutterMargin margin; - - guint x_expand : 1; - guint y_expand : 1; - - guint x_align : 4; - guint y_align : 4; -}; - struct _ClutterActorPrivate { /* request mode */ @@ -726,9 +713,6 @@ static void _clutter_actor_get_relative_transformation_matrix (ClutterActor *sel static ClutterPaintVolume *_clutter_actor_get_paint_volume_mutable (ClutterActor *self); -static LayoutInfo * clutter_actor_get_layout_info (ClutterActor *self); -static const LayoutInfo *clutter_actor_get_layout_info_or_defaults (ClutterActor *self); - /* Helper macro which translates by the anchor coord, applies the given transformation and then translates back */ #define TRANSFORM_ABOUT_ANCHOR_COORD(a,m,c,_transform) G_STMT_START { \ @@ -1941,6 +1925,10 @@ clutter_actor_real_allocate (ClutterActor *self, priv->allocation = *box; priv->allocation_flags = flags; + + /* allocation is authoritative */ + priv->needs_width_request = FALSE; + priv->needs_height_request = FALSE; priv->needs_allocation = FALSE; /* we allocate our children before we notify changes in our geometry, @@ -3626,16 +3614,18 @@ clutter_actor_get_property (GObject *object, case PROP_FIXED_X: { - LayoutInfo *info = clutter_actor_get_layout_info (actor); + const ClutterLayoutInfo *info; + info = _clutter_actor_get_layout_info_or_defaults (actor); g_value_set_float (value, info->fixed_x); } break; case PROP_FIXED_Y: { - LayoutInfo *info = clutter_actor_get_layout_info (actor); + const ClutterLayoutInfo *info; + info = _clutter_actor_get_layout_info_or_defaults (actor); g_value_set_float (value, info->fixed_y); } break; @@ -3870,80 +3860,72 @@ clutter_actor_get_property (GObject *object, case PROP_X_EXPAND: { - const LayoutInfo *info; - - info = clutter_actor_get_layout_info_or_defaults (actor); + const ClutterLayoutInfo *info; + info = _clutter_actor_get_layout_info_or_defaults (actor); g_value_set_boolean (value, info->x_expand); } break; case PROP_Y_EXPAND: { - const LayoutInfo *info; - - info = clutter_actor_get_layout_info_or_defaults (actor); + const ClutterLayoutInfo *info; + info = _clutter_actor_get_layout_info_or_defaults (actor); g_value_set_boolean (value, info->y_expand); } break; case PROP_X_ALIGN: { - const LayoutInfo *info; - - info = clutter_actor_get_layout_info_or_defaults (actor); + const ClutterLayoutInfo *info; + info = _clutter_actor_get_layout_info_or_defaults (actor); g_value_set_enum (value, info->x_align); } break; case PROP_Y_ALIGN: { - const LayoutInfo *info; - - info = clutter_actor_get_layout_info_or_defaults (actor); + const ClutterLayoutInfo *info; + info = _clutter_actor_get_layout_info_or_defaults (actor); g_value_set_enum (value, info->y_align); } break; case PROP_MARGIN_TOP: { - const LayoutInfo *info; - - info = clutter_actor_get_layout_info_or_defaults (actor); + const ClutterLayoutInfo *info; + info = _clutter_actor_get_layout_info_or_defaults (actor); g_value_set_float (value, info->margin.top); } break; case PROP_MARGIN_BOTTOM: { - const LayoutInfo *info; - - info = clutter_actor_get_layout_info_or_defaults (actor); + const ClutterLayoutInfo *info; + info = _clutter_actor_get_layout_info_or_defaults (actor); g_value_set_float (value, info->margin.bottom); } break; case PROP_MARGIN_LEFT: { - const LayoutInfo *info; - - info = clutter_actor_get_layout_info_or_defaults (actor); + const ClutterLayoutInfo *info; + info = _clutter_actor_get_layout_info_or_defaults (actor); g_value_set_float (value, info->margin.left); } break; case PROP_MARGIN_RIGHT: { - const LayoutInfo *info; - - info = clutter_actor_get_layout_info_or_defaults (actor); + const ClutterLayoutInfo *info; + info = _clutter_actor_get_layout_info_or_defaults (actor); g_value_set_float (value, info->margin.right); } break; @@ -6500,6 +6482,189 @@ clutter_actor_get_allocation_geometry (ClutterActor *self, geom->height = CLUTTER_NEARBYINT (clutter_actor_box_get_height (&box)); } +static ClutterActorAlign +effective_align (ClutterActorAlign align, + ClutterTextDirection direction) +{ + ClutterActorAlign res; + + switch (align) + { + case CLUTTER_ACTOR_ALIGN_START: + res = (direction == CLUTTER_TEXT_DIRECTION_RTL) + ? CLUTTER_ACTOR_ALIGN_END + : CLUTTER_ACTOR_ALIGN_START; + break; + + case CLUTTER_ACTOR_ALIGN_END: + res = (direction == CLUTTER_TEXT_DIRECTION_RTL) + ? CLUTTER_ACTOR_ALIGN_START + : CLUTTER_ACTOR_ALIGN_END; + break; + + default: + res = align; + break; + } + + return res; +} + +static inline void +adjust_for_margin (float margin_start, + float margin_end, + float *minimum_size, + float *natural_size, + float *allocated_start, + float *allocated_end) +{ + *minimum_size -= (margin_start + margin_end); + *natural_size -= (margin_start + margin_end); + *allocated_start += margin_start; + *allocated_end -= margin_end; +} + +static inline void +adjust_for_alignment (ClutterActorAlign alignment, + float natural_size, + float *allocated_start, + float *allocated_end) +{ + float allocated_size = *allocated_end - *allocated_start; + + switch (alignment) + { + case CLUTTER_ACTOR_ALIGN_FILL: + /* do nothing */ + break; + + case CLUTTER_ACTOR_ALIGN_START: + /* keep start */ + *allocated_end = *allocated_start + MIN (natural_size, allocated_size); + break; + + case CLUTTER_ACTOR_ALIGN_END: + if (allocated_size > natural_size) + { + *allocated_start += (allocated_size - natural_size); + *allocated_end = *allocated_start + natural_size; + } + break; + + case CLUTTER_ACTOR_ALIGN_CENTER: + if (allocated_size > natural_size) + { + *allocated_start += ceilf ((allocated_size - natural_size) / 2); + *allocated_end = *allocated_start + MIN (allocated_size, natural_size); + } + break; + } +} + +/*< private > + * clutter_actor_adjust_allocation: + * @self: a #ClutterActor + * @allocation: (inout): the allocation to adjust + * + * Adjusts the passed allocation box taking into account the actor's + * layout information, like alignment, expansion, and margin. + */ +static void +clutter_actor_adjust_allocation (ClutterActor *self, + ClutterActorBox *allocation) +{ + ClutterActorPrivate *priv = self->priv; + ClutterActorBox adj_allocation; + float alloc_width, alloc_height; + float min_width, min_height; + float nat_width, nat_height; + ClutterRequestMode req_mode; + ClutterTextDirection text_dir; + const ClutterLayoutInfo *info; + + adj_allocation = *allocation; + + clutter_actor_box_get_size (allocation, &alloc_width, &alloc_height); + + /* we want to hit the cache, so we use the public API */ + req_mode = clutter_actor_get_request_mode (self); + + if (req_mode == CLUTTER_REQUEST_HEIGHT_FOR_WIDTH) + { + clutter_actor_get_preferred_width (self, -1, + &min_width, + &nat_width); + clutter_actor_get_preferred_height (self, alloc_width, + &min_height, + &nat_height); + } + else if (req_mode == CLUTTER_REQUEST_WIDTH_FOR_HEIGHT) + { + clutter_actor_get_preferred_height (self, -1, + &min_height, + &nat_height); + clutter_actor_get_preferred_height (self, alloc_height, + &min_width, + &nat_width); + } + +#ifdef CLUTTER_ENABLE_DEBUG + /* warn about underallocations */ + if ((min_width > alloc_width) || (min_height > alloc_height)) + { + g_warning (G_STRLOC ": The actor '%s' is getting an allocation " + "of %.2f x %.2f from its parent actor '%s', but its " + "requested minimum size is of %.2f x %.2f", + _clutter_actor_get_debug_name (self), + alloc_width, alloc_height, + _clutter_actor_get_debug_name (priv->parent_actor), + min_width, min_height); + } +#endif + + info = _clutter_actor_get_layout_info_or_defaults (self); + text_dir = clutter_actor_get_text_direction (self); + + CLUTTER_NOTE (LAYOUT, "Adjusting allocated X and width"); + adjust_for_margin (info->margin.left, info->margin.right, + &min_width, &nat_width, + &adj_allocation.x1, &adj_allocation.x2); + adjust_for_alignment (effective_align (info->x_align, text_dir), + nat_width, + &adj_allocation.x1, &adj_allocation.x2); + + CLUTTER_NOTE (LAYOUT, "Adjusting allocated Y and height"); + adjust_for_margin (info->margin.top, info->margin.bottom, + &min_height, &nat_height, + &adj_allocation.y1, &adj_allocation.y2); + adjust_for_alignment (info->y_align, + nat_height, + &adj_allocation.y1, &adj_allocation.y2); + + /* we maintain the invariant that an allocation cannot be adjusted + * to be outside the parent-given box + */ + if (adj_allocation.x1 < allocation->x1 || + adj_allocation.y1 < allocation->y1 || + adj_allocation.x2 > allocation->x2 || + adj_allocation.y2 > allocation->y2) + { + g_warning (G_STRLOC ": The actor '%s' tried to adjust its allocation " + "to { %.2f, %.2f, %.2f, %.2f }, which is outside of its " + "original allocation of { %.2f, %.2f, %.2f, %.2f }", + _clutter_actor_get_debug_name (self), + adj_allocation.x1, adj_allocation.y1, + adj_allocation.x2 - adj_allocation.x1, + adj_allocation.y2 - adj_allocation.y1, + allocation->x1, allocation->y1, + allocation->x2 - allocation->x1, + allocation->y2 - allocation->y1); + return; + } + + *allocation = adj_allocation; +} + /** * clutter_actor_allocate: * @self: A #ClutterActor @@ -6525,7 +6690,7 @@ clutter_actor_allocate (ClutterActor *self, { ClutterActorPrivate *priv; ClutterActorClass *klass; - ClutterActorBox alloc; + ClutterActorBox old_allocation, real_allocation; gboolean origin_changed, child_moved, size_changed; gboolean stage_allocation_changed; @@ -6540,8 +6705,13 @@ clutter_actor_allocate (ClutterActor *self, priv = self->priv; - alloc = *box; + old_allocation = priv->allocation; + real_allocation = *box; + /* constraints are allowed to modify the allocation prior to + * the ::allocate() implementation, so that if the allocation + * did not change, we can bail out early + */ if (priv->constraints != NULL) { const GList *constraints, *l; @@ -6553,17 +6723,37 @@ clutter_actor_allocate (ClutterActor *self, ClutterActorMeta *meta = l->data; if (clutter_actor_meta_get_enabled (meta)) - _clutter_constraint_update_allocation (constraint, self, &alloc); + { + _clutter_constraint_update_allocation (constraint, + self, + &real_allocation); + } } } + /* adjust the allocation depending on the align/expand/margin properties */ + clutter_actor_adjust_allocation (self, &real_allocation); + + if (real_allocation.x2 < real_allocation.x1 || + real_allocation.y2 < real_allocation.y1) + { + g_warning (G_STRLOC ": Actor '%s' tried to allocate a size of %.2f x %.2f", + _clutter_actor_get_debug_name (self), + real_allocation.x2 - real_allocation.x1, + real_allocation.y2 - real_allocation.y1); + } + + /* we allow 0-sized actors, but not negative-sized ones */ + real_allocation.x2 = MAX (real_allocation.x2, real_allocation.x1); + real_allocation.y2 = MAX (real_allocation.y2, real_allocation.y1); + origin_changed = (flags & CLUTTER_ABSOLUTE_ORIGIN_CHANGED); - child_moved = (alloc.x1 != priv->allocation.x1 || - alloc.y1 != priv->allocation.y1); + child_moved = (real_allocation.x1 != old_allocation.x1 || + real_allocation.y1 != old_allocation.y1); - size_changed = (alloc.x2 != priv->allocation.x2 || - alloc.y2 != priv->allocation.y2); + size_changed = (real_allocation.x2 != old_allocation.x2 || + real_allocation.y2 != old_allocation.y2); if (origin_changed || child_moved || size_changed) stage_allocation_changed = TRUE; @@ -6582,7 +6772,6 @@ clutter_actor_allocate (ClutterActor *self, * actors that did not queue relayout and were * not moved. */ - if (!priv->needs_allocation && !stage_allocation_changed) { CLUTTER_NOTE (LAYOUT, "No allocation needed"); @@ -6601,7 +6790,7 @@ clutter_actor_allocate (ClutterActor *self, CLUTTER_SET_PRIVATE_FLAGS (self, CLUTTER_IN_RELAYOUT); klass = CLUTTER_ACTOR_GET_CLASS (self); - klass->allocate (self, &alloc, flags); + klass->allocate (self, &real_allocation, flags); CLUTTER_UNSET_PRIVATE_FLAGS (self, CLUTTER_IN_RELAYOUT); @@ -6757,13 +6946,12 @@ clutter_actor_move_by (ClutterActor *self, gfloat dx, gfloat dy) { - LayoutInfo *info; + const ClutterLayoutInfo *info; gfloat x, y; g_return_if_fail (CLUTTER_IS_ACTOR (self)); - info = clutter_actor_get_layout_info (self); - + info = _clutter_actor_get_layout_info_or_defaults (self); x = info->fixed_x; y = info->fixed_y; @@ -7500,13 +7688,13 @@ clutter_actor_set_x (ClutterActor *self, { ClutterActorBox old = { 0, }; ClutterActorPrivate *priv; - LayoutInfo *info; + ClutterLayoutInfo *info; g_return_if_fail (CLUTTER_IS_ACTOR (self)); priv = self->priv; - info = clutter_actor_get_layout_info (self); + info = _clutter_actor_get_layout_info (self); if (priv->position_set && info->fixed_x == x) return; @@ -7539,13 +7727,13 @@ clutter_actor_set_y (ClutterActor *self, { ClutterActorBox old = { 0, }; ClutterActorPrivate *priv; - LayoutInfo *info; + ClutterLayoutInfo *info; g_return_if_fail (CLUTTER_IS_ACTOR (self)); priv = self->priv; - info = clutter_actor_get_layout_info (self); + info = _clutter_actor_get_layout_info (self); if (priv->position_set && info->fixed_y == y) return; @@ -7595,7 +7783,9 @@ clutter_actor_get_x (ClutterActor *self) { if (priv->position_set) { - LayoutInfo *info = clutter_actor_get_layout_info (self); + const ClutterLayoutInfo *info; + + info = _clutter_actor_get_layout_info_or_defaults (self); return info->fixed_x; } @@ -7641,7 +7831,9 @@ clutter_actor_get_y (ClutterActor *self) { if (priv->position_set) { - LayoutInfo *info = clutter_actor_get_layout_info (self); + const ClutterLayoutInfo *info; + + info = _clutter_actor_get_layout_info_or_defaults (self); return info->fixed_y; } @@ -13256,7 +13448,7 @@ clutter_actor_get_layout_manager (ClutterActor *self) return self->priv->layout_manager; } -static const LayoutInfo default_layout_info = { +static const ClutterLayoutInfo default_layout_info = { 0.f, /* fixed-x */ 0.f, /* fixed-y */ { 0, 0, 0, 0 }, /* margin */ @@ -13270,34 +13462,34 @@ static void layout_info_free (gpointer data) { if (G_LIKELY (data != NULL)) - g_slice_free (LayoutInfo, data); + g_slice_free (ClutterLayoutInfo, data); } /*< private > - * clutter_actor_get_layout_info: + * _clutter_actor_get_layout_info: * @self: a #ClutterActor * - * Retrieves a pointer to the LayoutInfo structure. + * Retrieves a pointer to the ClutterLayoutInfo structure. * - * If the actor does not have a LayoutInfo associated to it, one + * If the actor does not have a ClutterLayoutInfo associated to it, one * will be created and initialized to the default values. * * This function should be used for setters. * - * For getters, you should use clutter_actor_get_layout_info_or_defaults() + * For getters, you should use _clutter_actor_get_layout_info_or_defaults() * instead. * - * Return value: (transfer none): a pointer to the LayoutInfo structure + * Return value: (transfer none): a pointer to the ClutterLayoutInfo structure */ -static LayoutInfo * -clutter_actor_get_layout_info (ClutterActor *self) +ClutterLayoutInfo * +_clutter_actor_get_layout_info (ClutterActor *self) { - LayoutInfo *retval; + ClutterLayoutInfo *retval; retval = g_object_get_qdata (G_OBJECT (self), quark_actor_layout_info); if (retval == NULL) { - retval = g_slice_new (LayoutInfo); + retval = g_slice_new (ClutterLayoutInfo); *retval = default_layout_info; @@ -13310,22 +13502,22 @@ clutter_actor_get_layout_info (ClutterActor *self) } /*< private > - * clutter_actor_get_layout_info_or_defaults: + * _clutter_actor_get_layout_info_or_defaults: * @self: a #ClutterActor * - * Retrieves the LayoutInfo structure associated to an actor. + * Retrieves the ClutterLayoutInfo structure associated to an actor. * - * If the actor does not have a LayoutInfo structure associated to it, + * If the actor does not have a ClutterLayoutInfo structure associated to it, * then the default structure will be returned. * * This function should only be used for getters. * - * Return value: a const pointer to the LayoutInfo structure + * Return value: a const pointer to the ClutterLayoutInfo structure */ -static const LayoutInfo * -clutter_actor_get_layout_info_or_defaults (ClutterActor *self) +const ClutterLayoutInfo * +_clutter_actor_get_layout_info_or_defaults (ClutterActor *self) { - const LayoutInfo *info; + const ClutterLayoutInfo *info; info = g_object_get_qdata (G_OBJECT (self), quark_actor_layout_info); if (info == NULL) @@ -13338,13 +13530,13 @@ void clutter_actor_set_x_expand (ClutterActor *self, gboolean x_expand) { - LayoutInfo *info; + ClutterLayoutInfo *info; g_return_if_fail (CLUTTER_IS_ACTOR (self)); x_expand = !!x_expand; - info = clutter_actor_get_layout_info (self); + info = _clutter_actor_get_layout_info (self); if (info->x_expand != x_expand) { @@ -13361,20 +13553,20 @@ clutter_actor_get_x_expand (ClutterActor *self) { g_return_val_if_fail (CLUTTER_IS_ACTOR (self), FALSE); - return clutter_actor_get_layout_info_or_defaults (self)->x_expand; + return _clutter_actor_get_layout_info_or_defaults (self)->x_expand; } void clutter_actor_set_y_expand (ClutterActor *self, gboolean y_expand) { - LayoutInfo *info; + ClutterLayoutInfo *info; g_return_if_fail (CLUTTER_IS_ACTOR (self)); y_expand = !!y_expand; - info = clutter_actor_get_layout_info (self); + info = _clutter_actor_get_layout_info (self); if (info->y_expand != y_expand) { @@ -13391,18 +13583,18 @@ clutter_actor_get_y_expand (ClutterActor *self) { g_return_val_if_fail (CLUTTER_IS_ACTOR (self), FALSE); - return clutter_actor_get_layout_info_or_defaults (self)->y_expand; + return _clutter_actor_get_layout_info_or_defaults (self)->y_expand; } void clutter_actor_set_x_align (ClutterActor *self, ClutterActorAlign x_align) { - LayoutInfo *info; + ClutterLayoutInfo *info; g_return_if_fail (CLUTTER_IS_ACTOR (self)); - info = clutter_actor_get_layout_info (self); + info = _clutter_actor_get_layout_info (self); if (info->x_align != x_align) { @@ -13419,18 +13611,18 @@ clutter_actor_get_x_align (ClutterActor *self) { g_return_val_if_fail (CLUTTER_IS_ACTOR (self), CLUTTER_ACTOR_ALIGN_FILL); - return clutter_actor_get_layout_info_or_defaults (self)->x_align; + return _clutter_actor_get_layout_info_or_defaults (self)->x_align; } void clutter_actor_set_y_align (ClutterActor *self, ClutterActorAlign y_align) { - LayoutInfo *info; + ClutterLayoutInfo *info; g_return_if_fail (CLUTTER_IS_ACTOR (self)); - info = clutter_actor_get_layout_info (self); + info = _clutter_actor_get_layout_info (self); if (info->y_align != y_align) { @@ -13447,7 +13639,7 @@ clutter_actor_get_y_align (ClutterActor *self) { g_return_val_if_fail (CLUTTER_IS_ACTOR (self), CLUTTER_ACTOR_ALIGN_FILL); - return clutter_actor_get_layout_info_or_defaults (self)->y_align; + return _clutter_actor_get_layout_info_or_defaults (self)->y_align; } ClutterMargin * @@ -13480,12 +13672,12 @@ void clutter_actor_set_margin_top (ClutterActor *self, gfloat margin) { - LayoutInfo *info; + ClutterLayoutInfo *info; g_return_if_fail (CLUTTER_IS_ACTOR (self)); g_return_if_fail (margin >= 0.f); - info = clutter_actor_get_layout_info (self); + info = _clutter_actor_get_layout_info (self); if (info->margin.top == margin) return; @@ -13502,19 +13694,19 @@ clutter_actor_get_margin_top (ClutterActor *self) { g_return_val_if_fail (CLUTTER_IS_ACTOR (self), 0.f); - return clutter_actor_get_layout_info_or_defaults (self)->margin.top; + return _clutter_actor_get_layout_info_or_defaults (self)->margin.top; } void clutter_actor_set_margin_bottom (ClutterActor *self, gfloat margin) { - LayoutInfo *info; + ClutterLayoutInfo *info; g_return_if_fail (CLUTTER_IS_ACTOR (self)); g_return_if_fail (margin >= 0.f); - info = clutter_actor_get_layout_info (self); + info = _clutter_actor_get_layout_info (self); if (info->margin.bottom == margin) return; @@ -13531,19 +13723,19 @@ clutter_actor_get_margin_bottom (ClutterActor *self) { g_return_val_if_fail (CLUTTER_IS_ACTOR (self), 0.f); - return clutter_actor_get_layout_info_or_defaults (self)->margin.bottom; + return _clutter_actor_get_layout_info_or_defaults (self)->margin.bottom; } void clutter_actor_set_margin_left (ClutterActor *self, gfloat margin) { - LayoutInfo *info; + ClutterLayoutInfo *info; g_return_if_fail (CLUTTER_IS_ACTOR (self)); g_return_if_fail (margin >= 0.f); - info = clutter_actor_get_layout_info (self); + info = _clutter_actor_get_layout_info (self); if (info->margin.left == margin) return; @@ -13560,19 +13752,19 @@ clutter_actor_get_margin_left (ClutterActor *self) { g_return_val_if_fail (CLUTTER_IS_ACTOR (self), 0.f); - return clutter_actor_get_layout_info_or_defaults (self)->margin.left; + return _clutter_actor_get_layout_info_or_defaults (self)->margin.left; } void clutter_actor_set_margin_right (ClutterActor *self, gfloat margin) { - LayoutInfo *info; + ClutterLayoutInfo *info; g_return_if_fail (CLUTTER_IS_ACTOR (self)); g_return_if_fail (margin >= 0.f); - info = clutter_actor_get_layout_info (self); + info = _clutter_actor_get_layout_info (self); if (info->margin.right == margin) return; @@ -13589,5 +13781,5 @@ clutter_actor_get_margin_right (ClutterActor *self) { g_return_val_if_fail (CLUTTER_IS_ACTOR (self), 0.f); - return clutter_actor_get_layout_info_or_defaults (self)->margin.right; + return _clutter_actor_get_layout_info_or_defaults (self)->margin.right; }