You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by cf...@apache.org on 2012/10/30 20:31:44 UTC

svn commit: r1403832 - /incubator/flex/sdk/branches/develop/frameworks/projects/spark/src/spark/components/Group.as

Author: cframpton
Date: Tue Oct 30 19:31:44 2012
New Revision: 1403832

URL: http://svn.apache.org/viewvc?rev=1403832&view=rev
Log:
Defer adding IAdvancedStyleClients to a Group until after its children have been created with createChildren(). The locale was not propagating properly.  [SDK-30452]

Modified:
    incubator/flex/sdk/branches/develop/frameworks/projects/spark/src/spark/components/Group.as

Modified: incubator/flex/sdk/branches/develop/frameworks/projects/spark/src/spark/components/Group.as
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/frameworks/projects/spark/src/spark/components/Group.as?rev=1403832&r1=1403831&r2=1403832&view=diff
==============================================================================
--- incubator/flex/sdk/branches/develop/frameworks/projects/spark/src/spark/components/Group.as (original)
+++ incubator/flex/sdk/branches/develop/frameworks/projects/spark/src/spark/components/Group.as Tue Oct 30 19:31:44 2012
@@ -23,9 +23,9 @@ package spark.components 
 import flash.display.BlendMode;
 import flash.display.DisplayObject;
 import flash.geom.Rectangle;
+import flash.utils.Dictionary;
 
 import mx.core.FlexVersion;
-import mx.styles.IAdvancedStyleClient;
 import mx.core.IFlexModule;
 import mx.core.IFontContextComponent;
 import mx.core.IUIComponent;
@@ -43,6 +43,8 @@ import mx.graphics.shaderClasses.HueShad
 import mx.graphics.shaderClasses.LuminosityShader;
 import mx.graphics.shaderClasses.SaturationShader;
 import mx.graphics.shaderClasses.SoftLightShader;
+import mx.styles.AdvancedStyleClient;
+import mx.styles.IAdvancedStyleClient;
 import mx.styles.ISimpleStyleClient;
 import mx.styles.IStyleClient;
 import mx.styles.StyleProtoChain;
@@ -239,6 +241,7 @@ public class Group extends GroupBase imp
     private var needsDisplayObjectAssignment:Boolean = false;
     private var layeringMode:uint = ITEM_ORDERED_LAYERING;
     private var numGraphicElements:uint = 0;
+    private var deferredStyleClients:Dictionary = null;  // of IAdvancedStyleClient
     
     private static const ITEM_ORDERED_LAYERING:uint = 0;
     private static const SPARSE_LAYERING:uint = 1;    
@@ -841,6 +844,37 @@ public class Group extends GroupBase imp
     
     /**
      *  @private
+     *  Defer adding IAdvancedStyleClients until createChildren() time.  The AdvancedStyleClient's
+     *  styleName might be a component's show inclusion in the IVisualElement hierarchy was also
+     *  deferred.
+     */ 
+    override public function addStyleClient(styleClient:IAdvancedStyleClient):void    
+    {
+        if (!createChildrenCalled)
+        {
+            if (!deferredStyleClients)
+                deferredStyleClients = new Dictionary(true);
+            deferredStyleClients[styleClient] = true;
+        }
+        else 
+        {
+            super.addStyleClient(styleClient);
+        }
+    }
+    
+    /**
+     *  @private
+     */     
+    override public function removeStyleClient(styleClient:IAdvancedStyleClient):void
+    {
+        if (deferredStyleClients && !createChildrenCalled)
+            delete deferredStyleClients[styleClient];
+        else
+            super.removeStyleClient(styleClient);
+    }
+    
+    /**
+     *  @private
      *  Whether createChildren() has been called or not.
      *  We use this in the setter for mxmlContent to know 
      *  whether to validate the value immediately, or just 
@@ -862,6 +896,17 @@ public class Group extends GroupBase imp
             mxmlContentChanged = false;
             setMXMLContent(_mxmlContent);
         }
+        
+        if (deferredStyleClients)
+        {
+            for (var obj:Object in deferredStyleClients)
+            {
+                var styleClient:IAdvancedStyleClient = obj as IAdvancedStyleClient;
+                if (styleClient)
+                    super.addStyleClient(styleClient);
+            }
+            deferredStyleClients = null;
+        }        
     }
     
     /**