actor: Reset the content box when setting a new content

We want to recompute the content box when changing the content instance,
in case the preferred size is different and the content gravity uses the
preferred size; the change of content with different preferred size and
same gravity should also trigger an implicit transition.

https://bugzilla.gnome.org/show_bug.cgi?id=711182
This commit is contained in:
Emmanuele Bassi 2014-12-13 14:29:30 +00:00
parent 1e2132eca4
commit d546c0c121
1 changed files with 19 additions and 1 deletions

View File

@ -19606,7 +19606,25 @@ clutter_actor_set_content (ClutterActor *self,
* do.
*/
if (priv->content_gravity != CLUTTER_CONTENT_GRAVITY_RESIZE_FILL)
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_CONTENT_BOX]);
{
if (priv->content_box_valid)
{
ClutterActorBox from_box, to_box;
clutter_actor_get_content_box (self, &from_box);
/* invalidate the cached content box */
priv->content_box_valid = FALSE;
clutter_actor_get_content_box (self, &to_box);
if (!clutter_actor_box_equal (&from_box, &to_box))
_clutter_actor_create_transition (self, obj_props[PROP_CONTENT_BOX],
&from_box,
&to_box);
}
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_CONTENT_BOX]);
}
}
/**