2008-06-11 Emmanuele Bassi <ebassi@openedhand.com>

* clutter/clutter-label.c (clutter_label_allocate): Keep the
	layout if the size of the allocation is the same as the last
	allocation received by the label.
This commit is contained in:
Emmanuele Bassi 2008-06-11 16:12:52 +00:00
parent c859a2f7fd
commit 583ea401c3
2 changed files with 18 additions and 6 deletions

View File

@ -1,3 +1,9 @@
2008-06-11 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-label.c (clutter_label_allocate): Keep the
layout if the size of the allocation is the same as the last
allocation received by the label.
2008-06-11 Emmanuele Bassi <ebassi@openedhand.com> 2008-06-11 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-actor.c: Notify :x, :y, :width and :height * clutter/clutter-actor.c: Notify :x, :y, :width and :height

View File

@ -93,6 +93,8 @@ struct _ClutterLabelPrivate
PangoAttrList *attrs; PangoAttrList *attrs;
PangoAttrList *effective_attrs; PangoAttrList *effective_attrs;
PangoLayout *layout; PangoLayout *layout;
ClutterUnit layout_width;
}; };
/* /*
@ -287,14 +289,18 @@ clutter_label_allocate (ClutterActor *self,
ClutterLabelPrivate *priv = label->priv; ClutterLabelPrivate *priv = label->priv;
ClutterActorClass *parent_class; ClutterActorClass *parent_class;
/* the allocation was changed, so we must recreate the layout */ if (priv->layout_width != (box->x2 - box->x1))
if (priv->layout)
{ {
g_object_unref (priv->layout); /* the allocation was changed, so we must recreate the layout */
priv->layout = NULL; if (priv->layout)
} {
g_object_unref (priv->layout);
priv->layout = NULL;
}
priv->layout = clutter_label_create_layout (label, box->x2 - box->x1); priv->layout = clutter_label_create_layout (label, box->x2 - box->x1);
priv->layout_width = box->x2 - box->x1;
}
parent_class = CLUTTER_ACTOR_CLASS (clutter_label_parent_class); parent_class = CLUTTER_ACTOR_CLASS (clutter_label_parent_class);
parent_class->allocate (self, box, origin_changed); parent_class->allocate (self, box, origin_changed);