[clutter/clutter-1.22] actor: Reset the content box when setting a new content



commit d546c0c121a967ab49773f91119dffe9d0358cdd
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Sat Dec 13 14:29:30 2014 +0000

    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

 clutter/clutter-actor.c |   20 +++++++++++++++++++-
 1 files changed, 19 insertions(+), 1 deletions(-)
---
diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c
index 652721c..c805c52 100644
--- a/clutter/clutter-actor.c
+++ b/clutter/clutter-actor.c
@@ -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]);
+   }
 }
 
 /**


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]