Transferred from the Adobe Open Source Subversion Repository

Revision: 11803
Author:   egeorgie@adobe.com
Date:     2009-11-13T23:17:51.085266Z

Log Message:
-----------
Fix http://bugs.adobe.com/jira/browse/SDK-24080 fxg components with RichText report the wrong bounds (the RichText is not measured correctly)

Problem: Styles and RichText are now initialized after the construction of the SpriteVisualElement, but the SVE measures itself in its c-tor.
Fix: when the RichText is validates, invalidate the size and re-measure the SpriteVisualElement.

QE notes: None
Doc notes: None
Bugs: SDK-24080
Reviewer: Pete, Ryan
Tests run: None
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FlexFXG2SWFTranscoder.java</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1283329 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/core/SpriteVisualElement.as
+++ frameworks/projects/spark/src/spark/core/SpriteVisualElement.as
@@ -56,7 +56,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-public class SpriteVisualElement extends FlexSprite
+public class SpriteVisualElement extends FlexSprite
     implements IVisualElement, IID, IFlexModule
 {
     /**
@@ -70,196 +70,234 @@
     public function SpriteVisualElement()
     {
         super();
-        var bounds:Rectangle = getBounds(this);
-		naturalWidth = Math.max( 0, bounds.right);
-		naturalHeight = Math.max( 0, bounds.bottom);
-		_width = naturalWidth;
-		_height = naturalHeight;
-    }
-
-	//--------------------------------------------------------------------------
-	//
-	//  Variables
-	//
-	//--------------------------------------------------------------------------
-
-	// When changing these constants, make sure you change
-	// the constants with the same name in UIComponent
-	private static const DEFAULT_MAX_WIDTH:Number = 10000;
-	private static const DEFAULT_MAX_HEIGHT:Number = 10000;
-
-	/**
-	 *  @private
-	 *  Storage for the original size of the graphic. Initialized in the c-tor.
-	 */
-	private var naturalWidth:Number;
-	private var naturalHeight:Number;
-
-	/**
-	 *  @private
-	 *  Storage for advanced layout and transform properties.
-	 */
-	private var _layoutFeatures:AdvancedLayoutFeatures;
-
-	/**
-	 *  @private
-	 *  When true, the transform on this component consists only of translation.
-	 *  Otherwise, it may be arbitrarily complex.
-	 */
-	private var hasDeltaIdentityTransform:Boolean = true;
-
-	/**
-	 *  @private
-	 *  Storage for the modified Transform object that can dispatch
-	 *  change events correctly.
-	 */
-	private var _transform:flash.geom.Transform;
-
-	/**
-	 *  @private
-	 *  Static point for use in transformPointToParent
-	 */
-	private static var xformPt:Point;
-
-	/**
-	 *  @private
-	 *  Initializes the implementation and storage of some of the less
-	 *  frequently used advanced layout features of a component.
-	 *  Call this function before attempting to use any of the
-	 *  features implemented by the AdvancedLayoutFeatures object.
-	 */
-	private function initAdvancedLayoutFeatures():void
-	{
-		var features:AdvancedLayoutFeatures = new AdvancedLayoutFeatures();
-
-		hasDeltaIdentityTransform = false;
-
-		features.layoutScaleX = scaleX;
-		features.layoutScaleY = scaleY;
-		features.layoutScaleZ = scaleZ;
-		features.layoutRotationX = rotationX;
-		features.layoutRotationY = rotationY;
-		features.layoutRotationZ = rotation;
-		features.layoutX = x;
-		features.layoutY = y;
-		features.layoutZ = z;
-
-		// Initialize the internal variable last,
-		// since the transform getters depend on it.
-		_layoutFeatures = features;
-
-		invalidateTransform();
-	}
-
-	/**
-	 *  @private
-	 *  Makes sure that the computed matrix will be committed.
-	 */
-	private function invalidateTransform():void
-	{
-		if (_layoutFeatures && _layoutFeatures.updatePending == false)
-		{
-			_layoutFeatures.updatePending = true;
-			applyComputedMatrix();
-		}
-	}
-
-	/**
-	 *  @private
-	 *  Commits the computed matrix built from the combination of the layout
-	 *  matrix and the transform offsets to the flash displayObject's transform.
-	 */
-	private function applyComputedMatrix():void
-	{
-		_layoutFeatures.updatePending = false;
-
-		if (_layoutFeatures.is3D)
-			super.transform.matrix3D = _layoutFeatures.computedMatrix3D;
-		else
-			super.transform.matrix = _layoutFeatures.computedMatrix;
-	}
-
-	/**
-	 *  @private
-	 *  Returns the layout matrix, or null if it only consists of translations.
-	 */
-	protected function nonDeltaLayoutMatrix():Matrix
-	{
-		if (hasDeltaIdentityTransform)
-			return null;
-		if (_layoutFeatures != null)
-		{
-			return _layoutFeatures.layoutMatrix;
-		}
-		else
-		{
-			// Lose scale.
-			// if scale is actually set (and it's not just our "secret scale"), then
-			// layoutFeatures wont' be null and we won't be down here
-			return MatrixUtil.composeMatrix(x, y, 1, 1, rotation, 0, 0);
-		}
-	}
-
-	/**
-	 *  @private
-	 *  Resizes the sprite to the specified pre-transform size
-	 */
-	private function setActualSize(width:Number, height:Number):void
-	{
-		_width = width;
-		_height = height;
-
-		if (resizeMode == ResizeMode.NOSCALE)
-		{
-			// Set the internal scale to 1
-			if (_layoutFeatures)
-			{
-				_layoutFeatures.stretchX = 1;
-				_layoutFeatures.stretchY = 1;
+        measure();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    // When changing these constants, make sure you change
+    // the constants with the same name in UIComponent
+    private static const DEFAULT_MAX_WIDTH:Number = 10000;
+    private static const DEFAULT_MAX_HEIGHT:Number = 10000;
+
+    /**
+     *  @private
+     *  Storage for the original size of the graphic. Initialized in the c-tor.
+     */
+    private var naturalWidth:Number;
+    private var naturalHeight:Number;
+
+    /**
+     *  @private
+     *  Storage for advanced layout and transform properties.
+     */
+    private var _layoutFeatures:AdvancedLayoutFeatures;
+
+    /**
+     *  @private
+     *  When true, the transform on this component consists only of translation.
+     *  Otherwise, it may be arbitrarily complex.
+     */
+    private var hasDeltaIdentityTransform:Boolean = true;
+
+    /**
+     *  @private
+     *  Storage for the modified Transform object that can dispatch
+     *  change events correctly.
+     */
+    private var _transform:flash.geom.Transform;
+
+    /**
+     *  @private
+     *  Static point for use in transformPointToParent
+     */
+    private static var xformPt:Point;
+
+    /**
+     *  @private
+     *  Initializes the implementation and storage of some of the less
+     *  frequently used advanced layout features of a component.
+     *  Call this function before attempting to use any of the
+     *  features implemented by the AdvancedLayoutFeatures object.
+     */
+    private function initAdvancedLayoutFeatures():void
+    {
+        var features:AdvancedLayoutFeatures = new AdvancedLayoutFeatures();
+
+        hasDeltaIdentityTransform = false;
+
+        features.layoutScaleX = scaleX;
+        features.layoutScaleY = scaleY;
+        features.layoutScaleZ = scaleZ;
+        features.layoutRotationX = rotationX;
+        features.layoutRotationY = rotationY;
+        features.layoutRotationZ = rotation;
+        features.layoutX = x;
+        features.layoutY = y;
+        features.layoutZ = z;
+
+        // Initialize the internal variable last,
+        // since the transform getters depend on it.
+        _layoutFeatures = features;
+
+        invalidateTransform();
+    }
+
+    /**
+     *  @private
+     *  Makes sure that the computed matrix will be committed.
+     */
+    private function invalidateTransform():void
+    {
+        if (_layoutFeatures && _layoutFeatures.updatePending == false)
+        {
+            _layoutFeatures.updatePending = true;
+            applyComputedMatrix();
+        }
+    }
+
+    /**
+     *  @private
+     *  Commits the computed matrix built from the combination of the layout
+     *  matrix and the transform offsets to the flash displayObject's transform.
+     */
+    private function applyComputedMatrix():void
+    {
+        _layoutFeatures.updatePending = false;
+
+        if (_layoutFeatures.is3D)
+            super.transform.matrix3D = _layoutFeatures.computedMatrix3D;
+        else
+            super.transform.matrix = _layoutFeatures.computedMatrix;
+    }
+
+    /**
+     *  @private
+     *  Returns the layout matrix, or null if it only consists of translations.
+     */
+    protected function nonDeltaLayoutMatrix():Matrix
+    {
+        if (hasDeltaIdentityTransform)
+            return null;
+        if (_layoutFeatures != null)
+        {
+            return _layoutFeatures.layoutMatrix;
+        }
+        else
+        {
+            // Lose scale.
+            // if scale is actually set (and it's not just our "secret scale"), then
+            // layoutFeatures wont' be null and we won't be down here
+            return MatrixUtil.composeMatrix(x, y, 1, 1, rotation, 0, 0);
+        }
+    }
+
+    /**
+     *  @private
+     *  Resizes the sprite to the specified pre-transform size
+     */
+    private function setActualSize(width:Number, height:Number):void
+    {
+        _width = width;
+        _height = height;
+
+        if (resizeMode == ResizeMode.NOSCALE)
+        {
+            // Set the internal scale to 1
+            if (_layoutFeatures)
+            {
+                _layoutFeatures.stretchX = 1;
+                _layoutFeatures.stretchY = 1;
                 invalidateTransform();
-			}
-		}
-		else
-		{
-			// Scale from the measured size to the layout size
-			var measuredWidth:Number = isNaN(_viewWidth) ? naturalWidth : _viewWidth;
-			var measuredHeight:Number = isNaN(_viewHeight) ? naturalHeight : _viewHeight;
-
-			var sx:Number = measuredWidth != 0 ? _width / measuredWidth : 1;
-			var sy:Number = measuredHeight != 0 ? _height / measuredHeight : 1;
+            }
+        }
+        else
+        {
+            // Scale from the measured size to the layout size
+            var measuredWidth:Number = isNaN(_viewWidth) ? naturalWidth : _viewWidth;
+            var measuredHeight:Number = isNaN(_viewHeight) ? naturalHeight : _viewHeight;
+
+            var sx:Number = measuredWidth != 0 ? _width / measuredWidth : 1;
+            var sy:Number = measuredHeight != 0 ? _height / measuredHeight : 1;

             if (sx != 1 || sy != 1 || _layoutFeatures)
             {
-    			if (_layoutFeatures == null)
-    				initAdvancedLayoutFeatures();
-
-    			_layoutFeatures.stretchX = sx;
-    			_layoutFeatures.stretchY = sy;
+                if (_layoutFeatures == null)
+                    initAdvancedLayoutFeatures();
+
+                _layoutFeatures.stretchX = sx;
+                _layoutFeatures.stretchY = sy;
                 invalidateTransform();
             }
-		}
-	}
-
-	/**
-	 *  @private
-	 *  Moves the sprite to the specified position, doesn't invalidate parent.
-	 */
-	private function move(x:Number, y:Number):void
-	{
-		if (_layoutFeatures == null)
-		{
-			super.x = x;
-			super.y = y;
-		}
-		else
-		{
-			_layoutFeatures.layoutX = x;
-			_layoutFeatures.layoutY = y;
-			invalidateTransform();
-		}
-	}
-
-	//--------------------------------------------------------------------------
+        }
+    }
+
+    /**
+     *  @private
+     *  Moves the sprite to the specified position, doesn't invalidate parent.
+     */
+    private function move(x:Number, y:Number):void
+    {
+        if (_layoutFeatures == null)
+        {
+            super.x = x;
+            super.y = y;
+        }
+        else
+        {
+            _layoutFeatures.layoutX = x;
+            _layoutFeatures.layoutY = y;
+            invalidateTransform();
+        }
+    }
+
+    /**
+     *  @private
+     *  Measures the naturalWidth and naturalHeight of the container
+     */
+    private function measure():void
+    {
+        var bounds:Rectangle = getBounds(this);
+        naturalWidth = Math.max(0, bounds.right);
+        naturalHeight = Math.max(0, bounds.bottom);
+
+        // If no explicit size has been set, then update the actual size here.
+        // In cases where the FXG is included in a layout, the layout will
+        // update the size afterwards because we will invalidate the parent.
+        if (isNaN(_explicitWidth))
+            _width = naturalWidth;
+
+        if (isNaN(_explicitHeight))
+            _height = naturalHeight;
+    }
+
+    /**
+     *  @private
+     *  Causes to re-measure the natural width/height
+     *  if size changes, parent size is invalidated as well.
+     */
+    protected function invalidateSize():void
+    {
+        var curWidth:Number = naturalWidth;
+        var curHeight:Number = naturalHeight;
+
+        measure();
+
+        if (curWidth != naturalWidth || curHeight != naturalHeight)
+        {
+            var parent:DisplayObjectContainer = this.parent;
+            if (parent is SpriteVisualElement)
+                SpriteVisualElement(parent).invalidateSize();
+            else
+                invalidateParentSizeAndDisplayList();
+        }
+    }
+
+    //--------------------------------------------------------------------------
     //
     //  Properties
     //
@@ -271,7 +309,7 @@

     /**
      *  @copy mx.core.ILayoutElement#postLayoutTransformOffsets
-     *
+     *
      *  @langversion 3.0
      *  @playerversion Flash 9
      *  @playerversion AIR 1.1
@@ -279,11 +317,11 @@
      */
     public function get postLayoutTransformOffsets():TransformOffsets
     {
-        return (_layoutFeatures == null)?
+        return (_layoutFeatures == null)?
             null :
             _layoutFeatures.postLayoutTransformOffsets;
     }
-
+
     /**
      * @private
      */
@@ -291,7 +329,7 @@
     {
         if (value != null && _layoutFeatures == null)
             initAdvancedLayoutFeatures();
-
+
         if (_layoutFeatures.postLayoutTransformOffsets != null)
             _layoutFeatures.postLayoutTransformOffsets.removeEventListener
                 (Event.CHANGE,transformOffsetsChangedHandler);
@@ -304,39 +342,39 @@
     //----------------------------------
     //  alpha
     //----------------------------------
-
+
     /**
      *  @private
      *  Storage for the alpha property.
      */
     private var _alpha:Number = 1.0;
-
+
     /**
      *  @private
      */
     override public function get alpha():Number
     {
-        // Here we roundtrip alpha in the same manner as the
+        // Here we roundtrip alpha in the same manner as the
         // player (purposely introducing a rounding error).
         return int(_alpha * 256.0) / 256.0;
     }
-
+
     /**
      *  @private
      */
     override public function set alpha(value:Number):void
-    {
+    {
         if (_alpha != value)
         {
             _alpha = value;
-
+
             if (designLayer)
-                value = value * designLayer.effectiveAlpha;
-
+                value = value * designLayer.effectiveAlpha;
+
             super.alpha = value;
         }
     }
-
+
     //----------------------------------
     //  baseline
     //----------------------------------
@@ -433,13 +471,13 @@
     //----------------------------------
     //  filters
     //----------------------------------
-
+
     /**
      *  @private
      *  Storage for the filters property.
      */
     private var _filters:Array;
-
+
     /**
      *  @private
      */
@@ -447,7 +485,7 @@
     {
         return _filters ? _filters : super.filters;
     }
-
+
     /**
      *  @private
      */
@@ -456,7 +494,7 @@
         var n:int;
         var i:int;
         var e:IEventDispatcher;
-
+
         if (_filters)
         {
             n = _filters.length;
@@ -467,9 +505,9 @@
                     e.removeEventListener(BaseFilter.CHANGE, filterChangeHandler);
             }
         }
-
+
         _filters = value;
-
+
         var clonedFilters:Array = [];
         if (_filters)
         {
@@ -489,7 +527,7 @@
                 }
             }
         }
-
+
         super.filters = clonedFilters;
     }

@@ -498,7 +536,7 @@
     //----------------------------------

     private var _explicitHeight:Number = NaN;    // The height explicitly set by the user
-    private var _height:Number = 0;        		 // The height that's set by the layout
+    private var _height:Number = 0;                 // The height that's set by the layout

     /**
      *  @private
@@ -514,17 +552,17 @@
      */
     override public function set height(value:Number):void
     {
-		// Apply to the current actual size
+        // Apply to the current actual size
         _height = value;
-		setActualSize(_width, _height);
-
-		// Modify the explicit height
-		if (_explicitHeight == value)
-            return;
-
-		_explicitHeight = value;
+        setActualSize(_width, _height);
+
+        // Modify the explicit height
+        if (_explicitHeight == value)
+            return;
+
+        _explicitHeight = value;
         invalidateParentSizeAndDisplayList();
-	}
+    }

     //----------------------------------
     //  horizontalCenter
@@ -672,33 +710,33 @@
         _left = value;
         invalidateParentSizeAndDisplayList();
     }
-
+
     //----------------------------------
     //  id
     //----------------------------------
-
+
     /**
      *  @private
      *  Storage for the id property.
      */
     private var _id:String;
-
-    /**
-     *  @inheritDoc
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
     public function get id():String
     {
         return _id;
     }
-
-    /**
-     *  @private
-     */
+
+    /**
+     *  @private
+     */
     public function set id(value:String):void
     {
         _id = value;
@@ -707,20 +745,20 @@
     //----------------------------------
     //  moduleFactory
     //----------------------------------
-
+
     /**
      *  @private
      *  Storage for the moduleFactory property.
      */
     private var _moduleFactory:IFlexModuleFactory;
-
+
     [Inspectable(environment="none")]
-
+
     /**
      *  A module factory is used as context for using embeded fonts and for
-     *  finding the style manager that controls the styles for this
-     *  component.
-     *
+     *  finding the style manager that controls the styles for this
+     *  component.
+     *
      *  @langversion 3.0
      *  @playerversion Flash 9
      *  @playerversion AIR 1.1
@@ -730,7 +768,7 @@
     {
         return _moduleFactory;
     }
-
+
     /**
      *  @private
      */
@@ -742,16 +780,16 @@
             var child:IFlexModule = getChildAt(i) as IFlexModule;
             if (!child)
                 continue;
-
+
             if (child.moduleFactory == null || child.moduleFactory == _moduleFactory)
             {
                 child.moduleFactory = factory;
             }
         }
-
+
         _moduleFactory = factory;
     }
-
+
     //----------------------------------
     //  owner
     //----------------------------------
@@ -778,7 +816,7 @@
     {
         _owner = value;
     }
-
+
     //----------------------------------
     //  layer
     //----------------------------------
@@ -788,12 +826,12 @@
      *  Storage for the layer property.
      */
     private var _designLayer:DesignLayer;
-
+
     [Inspectable (environment='none')]
-
+
     /**
      *  @copy mx.core.IVisualElement#designLayer
-     *
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10
      *  @playerversion AIR 1.5
@@ -803,7 +841,7 @@
     {
         return _designLayer;
     }
-
+
     /**
      *  @private
      */
@@ -811,16 +849,16 @@
     {
         if (_designLayer)
             _designLayer.removeEventListener("layerPropertyChange", layer_PropertyChange, false);
-
+
         _designLayer = value;
-
+
         if (_designLayer)
             _designLayer.addEventListener("layerPropertyChange", layer_PropertyChange, false, 0, true);

         super.alpha = _designLayer ? _alpha * _designLayer.effectiveAlpha : _alpha;
         super.visible = _designLayer ? _visible && _designLayer.effectiveVisibility : _visible;
     }
-
+
     //----------------------------------
     //  percentHeight
     //----------------------------------
@@ -932,198 +970,198 @@
         invalidateParentSizeAndDisplayList();
     }

-	//----------------------------------
-	//  x
-	//----------------------------------
-
-	/**
-	 *  @private
-	 */
-	override public function get x():Number
-	{
-		return (_layoutFeatures == null) ? super.x : _layoutFeatures.layoutX;
-	}
-
-	/**
-	 *  @private
-	 */
-	override public function set x(value:Number):void
-	{
-		if (x == value)
-			return;
-
-		move(value, y);
-		invalidateParentSizeAndDisplayList();
-	}
-
-	//----------------------------------
-	//  y
-	//----------------------------------
-
-	/**
-	 *  @private
-	 */
-	override public function get y():Number
-	{
-		return (_layoutFeatures == null) ? super.y : _layoutFeatures.layoutY;
-	}
-
-	/**
-	 *  @private
-	 */
-	override public function set y(value:Number):void
-	{
-		if (y == value)
-			return;
-
-		move(x, value);
-		invalidateParentSizeAndDisplayList();
-	}
-
-	//----------------------------------
-	//  z
-	//----------------------------------
-
-	override public function get z():Number
-	{
-		return (_layoutFeatures == null) ? super.z : _layoutFeatures.layoutZ;
-	}
-
-	/**
-	 *  @private
-	 */
-	override public function set z(value:Number):void
-	{
-		if (z == value)
-			return;
-
-		if (_layoutFeatures == null)
-			initAdvancedLayoutFeatures();
-
-		hasDeltaIdentityTransform = false;
-		_layoutFeatures.layoutZ = value;
-
-		invalidateTransform();
-		invalidateParentSizeAndDisplayList();
-	}
-
-	//----------------------------------
+    //----------------------------------
+    //  x
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    override public function get x():Number
+    {
+        return (_layoutFeatures == null) ? super.x : _layoutFeatures.layoutX;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set x(value:Number):void
+    {
+        if (x == value)
+            return;
+
+        move(value, y);
+        invalidateParentSizeAndDisplayList();
+    }
+
+    //----------------------------------
+    //  y
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    override public function get y():Number
+    {
+        return (_layoutFeatures == null) ? super.y : _layoutFeatures.layoutY;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set y(value:Number):void
+    {
+        if (y == value)
+            return;
+
+        move(x, value);
+        invalidateParentSizeAndDisplayList();
+    }
+
+    //----------------------------------
+    //  z
+    //----------------------------------
+
+    override public function get z():Number
+    {
+        return (_layoutFeatures == null) ? super.z : _layoutFeatures.layoutZ;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set z(value:Number):void
+    {
+        if (z == value)
+            return;
+
+        if (_layoutFeatures == null)
+            initAdvancedLayoutFeatures();
+
+        hasDeltaIdentityTransform = false;
+        _layoutFeatures.layoutZ = value;
+
+        invalidateTransform();
+        invalidateParentSizeAndDisplayList();
+    }
+
+    //----------------------------------
     //  rotation
     //----------------------------------

-	/**
-	 *  @private
-	 */
-	override public function get rotation():Number
-	{
-		return (_layoutFeatures == null) ? super.rotation : _layoutFeatures.layoutRotationZ;
-	}
+    /**
+     *  @private
+     */
+    override public function get rotation():Number
+    {
+        return (_layoutFeatures == null) ? super.rotation : _layoutFeatures.layoutRotationZ;
+    }

     /**
      *  @private
      */
     override public function set rotation(value:Number):void
     {
-		if (rotation == value)
-			return;
-
-		hasDeltaIdentityTransform = false;
-		if (_layoutFeatures == null)
-			super.rotation = MatrixUtil.clampRotation(value);
-		else
-			_layoutFeatures.layoutRotationZ = value;
-
-		invalidateTransform();
-		invalidateParentSizeAndDisplayList();
+        if (rotation == value)
+            return;
+
+        hasDeltaIdentityTransform = false;
+        if (_layoutFeatures == null)
+            super.rotation = MatrixUtil.clampRotation(value);
+        else
+            _layoutFeatures.layoutRotationZ = value;
+
+        invalidateTransform();
+        invalidateParentSizeAndDisplayList();
     }

     //----------------------------------
     //  rotationX
     //----------------------------------

-	/**
-	 *  Indicates the x-axis rotation of the DisplayObject instance, in degrees,
-	 *  from its original orientation relative to the 3D parent container.
-	 *  Values from 0 to 180 represent clockwise rotation; values from 0 to -180
-	 *  represent counterclockwise rotation. Values outside this range are added
-	 *  to or subtracted from 360 to obtain a value within the range.
-	 *
-	 *  This property is ignored during calculation by any of Flex's 2D layouts.
-	 *
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10
-	 *  @playerversion AIR 1.5
-	 *  @productversion Flex 4
-	 */
-	override public function get rotationX():Number
-	{
-		return (_layoutFeatures == null) ? super.rotationX : _layoutFeatures.layoutRotationX;
-	}
-
-	/**
-	 *  @private
-	 */
-	override public function set rotationX(value:Number):void
-	{
-		if (rotationX == value)
-			return;
-
-		if (_layoutFeatures == null)
-			initAdvancedLayoutFeatures();
-		_layoutFeatures.layoutRotationX = value;
-		invalidateTransform();
-		invalidateParentSizeAndDisplayList();
-	}
+    /**
+     *  Indicates the x-axis rotation of the DisplayObject instance, in degrees,
+     *  from its original orientation relative to the 3D parent container.
+     *  Values from 0 to 180 represent clockwise rotation; values from 0 to -180
+     *  represent counterclockwise rotation. Values outside this range are added
+     *  to or subtracted from 360 to obtain a value within the range.
+     *
+     *  This property is ignored during calculation by any of Flex's 2D layouts.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    override public function get rotationX():Number
+    {
+        return (_layoutFeatures == null) ? super.rotationX : _layoutFeatures.layoutRotationX;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set rotationX(value:Number):void
+    {
+        if (rotationX == value)
+            return;
+
+        if (_layoutFeatures == null)
+            initAdvancedLayoutFeatures();
+        _layoutFeatures.layoutRotationX = value;
+        invalidateTransform();
+        invalidateParentSizeAndDisplayList();
+    }

     //----------------------------------
     //  rotationY
     //----------------------------------

-	/**
-	 *  Indicates the y-axis rotation of the DisplayObject instance, in degrees,
-	 *  from its original orientation relative to the 3D parent container.
-	 *  Values from 0 to 180 represent clockwise rotation; values from 0 to -180
-	 *  represent counterclockwise rotation. Values outside this range are added
-	 *  to or subtracted from 360 to obtain a value within the range.
-	 *
-	 *  This property is ignored during calculation by any of Flex's 2D layouts.
-	 *
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10
-	 *  @playerversion AIR 1.5
-	 *  @productversion Flex 4
-	 */
-	override public function get rotationY():Number
-	{
-		return (_layoutFeatures == null) ? super.rotationY : _layoutFeatures.layoutRotationY;
-	}
-
-	/**
-	 *  @private
-	 */
-	override public function set rotationY(value:Number):void
-	{
-		if (rotationY == value)
-			return;
-
-		if (_layoutFeatures == null)
-			initAdvancedLayoutFeatures();
-		_layoutFeatures.layoutRotationY = value;
-		invalidateTransform();
-		invalidateParentSizeAndDisplayList();
-	}
+    /**
+     *  Indicates the y-axis rotation of the DisplayObject instance, in degrees,
+     *  from its original orientation relative to the 3D parent container.
+     *  Values from 0 to 180 represent clockwise rotation; values from 0 to -180
+     *  represent counterclockwise rotation. Values outside this range are added
+     *  to or subtracted from 360 to obtain a value within the range.
+     *
+     *  This property is ignored during calculation by any of Flex's 2D layouts.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    override public function get rotationY():Number
+    {
+        return (_layoutFeatures == null) ? super.rotationY : _layoutFeatures.layoutRotationY;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set rotationY(value:Number):void
+    {
+        if (rotationY == value)
+            return;
+
+        if (_layoutFeatures == null)
+            initAdvancedLayoutFeatures();
+        _layoutFeatures.layoutRotationY = value;
+        invalidateTransform();
+        invalidateParentSizeAndDisplayList();
+    }

     //----------------------------------
     //  rotationZ
     //----------------------------------

-	/**
-	 *  @private
-	 */
-	override public function get rotationZ():Number
-	{
-		return rotation;
-	}
+    /**
+     *  @private
+     */
+    override public function get rotationZ():Number
+    {
+        return rotation;
+    }

     /**
      *  @private
@@ -1140,30 +1178,30 @@
     /**
      *  @private
      */
-	override public function get scaleX():Number
-	{
-		// if it's been set, layoutFeatures won't be null.  Otherwise, return 1 as
-		// super.scaleX might be some other value since we change the width/height
-		// through scaling
-		return (_layoutFeatures == null) ? 1 : _layoutFeatures.layoutScaleX;
-	}
-
-	/**
-	 *  @private
-	 */
-	override public function set scaleX(value:Number):void
-	{
-		if (value == scaleX)
-			return;
-
-		if (_layoutFeatures == null)
-			initAdvancedLayoutFeatures();
-
-		hasDeltaIdentityTransform = false;
-		_layoutFeatures.layoutScaleX = value;
-		invalidateTransform();
-		invalidateParentSizeAndDisplayList();
-	}
+    override public function get scaleX():Number
+    {
+        // if it's been set, layoutFeatures won't be null.  Otherwise, return 1 as
+        // super.scaleX might be some other value since we change the width/height
+        // through scaling
+        return (_layoutFeatures == null) ? 1 : _layoutFeatures.layoutScaleX;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set scaleX(value:Number):void
+    {
+        if (value == scaleX)
+            return;
+
+        if (_layoutFeatures == null)
+            initAdvancedLayoutFeatures();
+
+        hasDeltaIdentityTransform = false;
+        _layoutFeatures.layoutScaleX = value;
+        invalidateTransform();
+        invalidateParentSizeAndDisplayList();
+    }

     //----------------------------------
     //  scaleY
@@ -1172,27 +1210,27 @@
     /**
      *  @private
      */
-	override public function get scaleY():Number
-	{
-		// if it's been set, layoutFeatures won't be null.  Otherwise, return 1 as
-		// super.scaleX might be some other value since we change the width/height
-		// through scaling
-		return (_layoutFeatures == null) ? 1 : _layoutFeatures.layoutScaleY;
-	}
-
-	override public function set scaleY(value:Number):void
-	{
-		if (value == scaleY)
-			return;
-
-		if (_layoutFeatures == null)
-			initAdvancedLayoutFeatures();
-
-		hasDeltaIdentityTransform = false;
-		_layoutFeatures.layoutScaleY = value;
-		invalidateTransform();
-		invalidateParentSizeAndDisplayList();
-	}
+    override public function get scaleY():Number
+    {
+        // if it's been set, layoutFeatures won't be null.  Otherwise, return 1 as
+        // super.scaleX might be some other value since we change the width/height
+        // through scaling
+        return (_layoutFeatures == null) ? 1 : _layoutFeatures.layoutScaleY;
+    }
+
+    override public function set scaleY(value:Number):void
+    {
+        if (value == scaleY)
+            return;
+
+        if (_layoutFeatures == null)
+            initAdvancedLayoutFeatures();
+
+        hasDeltaIdentityTransform = false;
+        _layoutFeatures.layoutScaleY = value;
+        invalidateTransform();
+        invalidateParentSizeAndDisplayList();
+    }

     //----------------------------------
     //  scaleZ
@@ -1201,27 +1239,27 @@
     /**
      *  @private
      */
-	override public function get scaleZ():Number
-	{
-		return (_layoutFeatures == null) ? super.scaleZ : _layoutFeatures.layoutScaleZ;
-	}
-
-	/**
-	 * @private
-	 */
-	override public function set scaleZ(value:Number):void
-	{
-		if (scaleZ == value)
-			return;
-
-		if (_layoutFeatures == null)
-			initAdvancedLayoutFeatures();
-
-		hasDeltaIdentityTransform = false;
-		_layoutFeatures.layoutScaleZ = value;
-		invalidateTransform();
-		invalidateParentSizeAndDisplayList();
-	}
+    override public function get scaleZ():Number
+    {
+        return (_layoutFeatures == null) ? super.scaleZ : _layoutFeatures.layoutScaleZ;
+    }
+
+    /**
+     * @private
+     */
+    override public function set scaleZ(value:Number):void
+    {
+        if (scaleZ == value)
+            return;
+
+        if (_layoutFeatures == null)
+            initAdvancedLayoutFeatures();
+
+        hasDeltaIdentityTransform = false;
+        _layoutFeatures.layoutScaleZ = value;
+        invalidateTransform();
+        invalidateParentSizeAndDisplayList();
+    }

     //----------------------------------
     //  top
@@ -1300,13 +1338,13 @@
     //----------------------------------
     //  visible
     //----------------------------------
-
+
     /**
      *  @private
      *  Storage for the visible property.
      */
     private var _visible:Boolean = true;
-
+
     /**
      *  @inheritDoc
      */
@@ -1314,29 +1352,29 @@
     {
         return _visible;
     }
-
+
     /**
      *  @private
      */
     override public function set visible(value:Boolean):void
     {
         _visible = value;
-
+
         if (designLayer && !designLayer.effectiveVisibility)
-            value = false;
-
+            value = false;
+
         if (super.visible == value)
             return;
-
+
         super.visible = value;
     }
-
+
     //----------------------------------
     //  width
     //----------------------------------

     private var _explicitWidth:Number = NaN;    // The width explicitly set by the user
-    private var _width:Number = 0;        		// The width that's set by the layout
+    private var _width:Number = 0;                // The width that's set by the layout

     /**
      *  @private
@@ -1352,16 +1390,16 @@
      */
     override public function set width(value:Number):void
     {
-		// Apply to the current actual size
+        // Apply to the current actual size
         _width = value;
-		setActualSize(_width, _height);
-
-		// Modify the explicit width
-		if (_explicitWidth == value)
-            return;
-
-		_explicitWidth = value;
-		invalidateParentSizeAndDisplayList();
+        setActualSize(_width, _height);
+
+        // Modify the explicit width
+        if (_explicitWidth == value)
+            return;
+
+        _explicitWidth = value;
+        invalidateParentSizeAndDisplayList();
     }

     //----------------------------------
@@ -1402,128 +1440,128 @@
         _viewHeight = value;
     }

-	//----------------------------------
-	//  resizeMode
-	//----------------------------------
-
-	private var _resizeMode:String = ResizeMode.SCALE;
-
-	/**
-	 *  @private
-	 */
-	public function get resizeMode():String
-	{
-		return _resizeMode;
-	}
-
-	/**
-	 *  @private
-	 */
-	public function set resizeMode(value:String):void
-	{
-		if (_resizeMode == value)
-			return;
-
-		_resizeMode = value;
-
-		// When resize mode changes, reapply the current size,
-		// so that the correct scale can be calcualted and applied correctly.
-		setActualSize(_width, _height);
-	}
-
-	//----------------------------------
-	//  transform
-	//----------------------------------
-
-	/**
-	 *  @private
-	 */
-	override public function get transform():flash.geom.Transform
-	{
-		if (_transform == null)
-		{
-			setTransform(new mx.geom.Transform(this));
-		}
-		return _transform;
-	}
-
-	/**
-	 * @private
-	 */
-	override public function set transform(value:flash.geom.Transform):void
-	{
-		var m:Matrix = value.matrix;
-		var m3:Matrix3D =  value.matrix3D;
-		var ct:ColorTransform = value.colorTransform;
-		var pp:PerspectiveProjection = value.perspectiveProjection;
-
-		var mxTransform:mx.geom.Transform = value as mx.geom.Transform;
-		if (mxTransform)
-		{
-			if (!mxTransform.applyMatrix)
-				m = null;
-
-			if (!mxTransform.applyMatrix3D)
-				m3 = null;
-		}
-
-		setTransform(value);
-
-		if (m != null)
-			setLayoutMatrix(m.clone(), true /*triggerLayoutPass*/);
-		else if (m3 != null)
-			setLayoutMatrix3D(m3.clone(), true /*triggerLayoutPass*/);
-
-		super.transform.colorTransform = ct;
-		super.transform.perspectiveProjection = pp;
-	}
-
-	/**
-	 *  @private
-	 */
-	private function setTransform(value:flash.geom.Transform):void
-	{
-		// Clean up the old transform
-		var oldTransform:mx.geom.Transform = _transform as mx.geom.Transform;
-		if (oldTransform)
-			oldTransform.target = null;
-
-		var newTransform:mx.geom.Transform = value as mx.geom.Transform;
-
-		if (newTransform)
-			newTransform.target = this;
-
-		_transform = value;
-	}
-
-	/**
-	 *  @private
-	 */
-	mx_internal function get $transform():flash.geom.Transform
-	{
-		return super.transform;
-	}
+    //----------------------------------
+    //  resizeMode
+    //----------------------------------
+
+    private var _resizeMode:String = ResizeMode.SCALE;
+
+    /**
+     *  @private
+     */
+    public function get resizeMode():String
+    {
+        return _resizeMode;
+    }
+
+    /**
+     *  @private
+     */
+    public function set resizeMode(value:String):void
+    {
+        if (_resizeMode == value)
+            return;
+
+        _resizeMode = value;
+
+        // When resize mode changes, reapply the current size,
+        // so that the correct scale can be calcualted and applied correctly.
+        setActualSize(_width, _height);
+    }
+
+    //----------------------------------
+    //  transform
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    override public function get transform():flash.geom.Transform
+    {
+        if (_transform == null)
+        {
+            setTransform(new mx.geom.Transform(this));
+        }
+        return _transform;
+    }
+
+    /**
+     * @private
+     */
+    override public function set transform(value:flash.geom.Transform):void
+    {
+        var m:Matrix = value.matrix;
+        var m3:Matrix3D =  value.matrix3D;
+        var ct:ColorTransform = value.colorTransform;
+        var pp:PerspectiveProjection = value.perspectiveProjection;
+
+        var mxTransform:mx.geom.Transform = value as mx.geom.Transform;
+        if (mxTransform)
+        {
+            if (!mxTransform.applyMatrix)
+                m = null;
+
+            if (!mxTransform.applyMatrix3D)
+                m3 = null;
+        }
+
+        setTransform(value);
+
+        if (m != null)
+            setLayoutMatrix(m.clone(), true /*triggerLayoutPass*/);
+        else if (m3 != null)
+            setLayoutMatrix3D(m3.clone(), true /*triggerLayoutPass*/);
+
+        super.transform.colorTransform = ct;
+        super.transform.perspectiveProjection = pp;
+    }
+
+    /**
+     *  @private
+     */
+    private function setTransform(value:flash.geom.Transform):void
+    {
+        // Clean up the old transform
+        var oldTransform:mx.geom.Transform = _transform as mx.geom.Transform;
+        if (oldTransform)
+            oldTransform.target = null;
+
+        var newTransform:mx.geom.Transform = value as mx.geom.Transform;
+
+        if (newTransform)
+            newTransform.target = this;
+
+        _transform = value;
+    }
+
+    /**
+     *  @private
+     */
+    mx_internal function get $transform():flash.geom.Transform
+    {
+        return super.transform;
+    }

     /**
      *  Sets the x coordinate for the transform center of the component.
-     *
-     *  <p>When this object is the target of a Spark transform effect,
-     *  you can override this property by setting
+     *
+     *  <p>When this object is the target of a Spark transform effect,
+     *  you can override this property by setting
      *  the <code>AnimateTransform.autoCenterTransform</code> property.
      *  If <code>autoCenterTransform</code> is <code>false</code>, the transform
      *  center is determined by the <code>transformX</code>,
      *  <code>transformY</code>, and <code>transformZ</code> properties
      *  of the effect target.
-     *  If <code>autoCenterTransform</code> is <code>true</code>,
-     *  the effect occurs around the center of the target,
+     *  If <code>autoCenterTransform</code> is <code>true</code>,
+     *  the effect occurs around the center of the target,
      *  <code>(width/2, height/2)</code>.</p>
      *
-     *  <p>Setting this property on the Spark effect class
+     *  <p>Setting this property on the Spark effect class
      *  overrides the setting on the target object.</p>
-     *
-     *  @see spark.effects.AnimateTransform#autoCenterTransform
-     *  @see spark.effects.AnimateTransform#transformX
-     *
+     *
+     *  @see spark.effects.AnimateTransform#autoCenterTransform
+     *  @see spark.effects.AnimateTransform#transformX
+     *
      *  @langversion 3.0
      *  @playerversion Flash 9
      *  @playerversion AIR 1.1
@@ -1533,7 +1571,7 @@
     {
         return (_layoutFeatures == null)? 0 : _layoutFeatures.transformX;
     }
-
+
     /**
      *  @private
      */
@@ -1547,27 +1585,27 @@
         invalidateTransform();
         invalidateParentSizeAndDisplayList();
     }
-
+
     /**
      *  Sets the y coordinate for the transform center of the component.
-     *
-     *  <p>When this object is the target of a Spark transform effect,
-     *  you can override this property by setting
+     *
+     *  <p>When this object is the target of a Spark transform effect,
+     *  you can override this property by setting
      *  the <code>AnimateTransform.autoCenterTransform</code> property.
      *  If <code>autoCenterTransform</code> is <code>false</code>, the transform
      *  center is determined by the <code>transformY</code>,
      *  <code>transformY</code>, and <code>transformZ</code> properties
      *  of the effect target.
-     *  If <code>autoCenterTransform</code> is <code>true</code>,
-     *  the effect occurs around the center of the target,
+     *  If <code>autoCenterTransform</code> is <code>true</code>,
+     *  the effect occurs around the center of the target,
      *  <code>(width/2, height/2)</code>.</p>
      *
-     *  <p>Setting this property on the Spark effect class
+     *  <p>Setting this property on the Spark effect class
      *  overrides the setting on the target object.</p>
-     *
-     *  @see spark.effects.AnimateTransform#autoCenterTransform
-     *  @see spark.effects.AnimateTransform#transformY
-     *
+     *
+     *  @see spark.effects.AnimateTransform#autoCenterTransform
+     *  @see spark.effects.AnimateTransform#transformY
+     *
      *  @langversion 3.0
      *  @playerversion Flash 9
      *  @playerversion AIR 1.1
@@ -1577,7 +1615,7 @@
     {
         return (_layoutFeatures == null)? 0 : _layoutFeatures.transformY;
     }
-
+
     /**
      *  @private
      */
@@ -1591,27 +1629,27 @@
         invalidateTransform();
         invalidateParentSizeAndDisplayList();
     }
-
+
     /**
      *  Sets the z coordinate for the transform center of the component.
-     *
-     *  <p>When this object is the target of a Spark transform effect,
-     *  you can override this property by setting
+     *
+     *  <p>When this object is the target of a Spark transform effect,
+     *  you can override this property by setting
      *  the <code>AnimateTransform.autoCenterTransform</code> property.
      *  If <code>autoCenterTransform</code> is <code>false</code>, the transform
      *  center is determined by the <code>transformZ</code>,
      *  <code>transformY</code>, and <code>transformZ</code> properties
      *  of the effect target.
-     *  If <code>autoCenterTransform</code> is <code>true</code>,
-     *  the effect occurs around the center of the target,
+     *  If <code>autoCenterTransform</code> is <code>true</code>,
+     *  the effect occurs around the center of the target,
      *  <code>(width/2, height/2)</code>.</p>
      *
-     *  <p>Setting this property on the Spark effect class
+     *  <p>Setting this property on the Spark effect class
      *  overrides the setting on the target object.</p>
-     *
-     *  @see spark.effects.AnimateTransform#autoCenterTransform
-     *  @see spark.effects.AnimateTransform#transformZ
-     *
+     *
+     *  @see spark.effects.AnimateTransform#autoCenterTransform
+     *  @see spark.effects.AnimateTransform#transformZ
+     *
      *  @langversion 3.0
      *  @playerversion Flash 9
      *  @playerversion AIR 1.1
@@ -1621,7 +1659,7 @@
     {
         return (_layoutFeatures == null)? 0 : _layoutFeatures.transformZ;
     }
-
+
     /**
      *  @private
      */
@@ -1635,13 +1673,13 @@
         invalidateTransform();
         invalidateParentSizeAndDisplayList();
     }
-
+
     //--------------------------------------------------------------------------
     //
     //  Overridden methods
     //
     //--------------------------------------------------------------------------
-
+
     /**
      *  @private
      */
@@ -1651,14 +1689,14 @@
         // In the case of SVE..we just need to deal with text UIComponents
         // and setting them up because this is a "static" object
         addingChild(child);
-
+
         super.addChild(child);
-
+
         childAdded(child);
-
+
         return child;
     }
-
+
     /**
      *  @private
      */
@@ -1666,29 +1704,29 @@
                                         index:int):DisplayObject
     {
         addingChild(child);
-
+
         super.addChildAt(child, index);
-
+
         childAdded(child);
-
+
         return child;
     }
-
+
     /**
      *  @private
      */
     mx_internal function addingChild(child:DisplayObject):void
-    {
+    {
         // for SVE, we just need to set up the parent and the nestLevel
         if (child is IUIComponent)
             IUIComponent(child).parentChanged(this);
-
-        // Set the nestLevel to "2" since we don't really have a
+
+        // Set the nestLevel to "2" since we don't really have a
         // concept of nestLevel for SVE
         if (child is ILayoutManagerClient)
             ILayoutManagerClient(child).nestLevel = 2;
     }
-
+
     /**
      *  @private
      */
@@ -1701,7 +1739,7 @@
         }
     }

-	//--------------------------------------------------------------------------
+    //--------------------------------------------------------------------------
     //
     //  Methods
     //
@@ -1742,7 +1780,7 @@
         {
             case "effectiveVisibility":
             {
-                var newValue:Boolean = (event.newValue && _visible);
+                var newValue:Boolean = (event.newValue && _visible);
                 if (newValue != super.visible)
                     super.visible = newValue;
                 break;
@@ -1756,7 +1794,7 @@
             }
         }
     }
-
+
     /**
      *  @private
      */
@@ -1764,7 +1802,7 @@
     {
         filters = _filters;
     }
-
+
     /**
      *  @inheritDoc
      *
@@ -1839,7 +1877,7 @@
      */
     public function getMaxBoundsWidth(postLayoutTransform:Boolean = true):Number
     {
-		return transformWidthForLayout(DEFAULT_MAX_WIDTH, DEFAULT_MAX_HEIGHT, postLayoutTransform);
+        return transformWidthForLayout(DEFAULT_MAX_WIDTH, DEFAULT_MAX_HEIGHT, postLayoutTransform);
     }

     /**
@@ -1852,7 +1890,7 @@
      */
     public function getMaxBoundsHeight(postLayoutTransform:Boolean = true):Number
     {
-		return transformHeightForLayout(DEFAULT_MAX_WIDTH, DEFAULT_MAX_HEIGHT, postLayoutTransform);
+        return transformHeightForLayout(DEFAULT_MAX_WIDTH, DEFAULT_MAX_HEIGHT, postLayoutTransform);
     }

     /**
@@ -1917,7 +1955,7 @@
      */
     public function getBoundsXAtSize(width:Number, height:Number, postLayoutTransform:Boolean = true):Number
     {
-		var m:Matrix = postLayoutTransform ? nonDeltaLayoutMatrix() : null;
+        var m:Matrix = postLayoutTransform ? nonDeltaLayoutMatrix() : null;
         if (!m)
             return x;

@@ -1936,7 +1974,7 @@
      */
     public function getBoundsYAtSize(width:Number, height:Number, postLayoutTransform:Boolean = true):Number
     {
-		var m:Matrix = postLayoutTransform ? nonDeltaLayoutMatrix() : null;
+        var m:Matrix = postLayoutTransform ? nonDeltaLayoutMatrix() : null;
         if (!m)
             return y;

@@ -1984,7 +2022,7 @@
         var yOffset:Number = newBoundsY - currentBoundsY;

         if (xOffset != 0 || yOffset != 0)
-			move(x + xOffset, y + yOffset);
+            move(x + xOffset, y + yOffset);
     }

     /**
@@ -1999,44 +2037,44 @@
                                         height:Number,
                                         postLayoutTransform:Boolean = true):void
     {
-		var m:Matrix = postLayoutTransform ? nonDeltaLayoutMatrix() : null;
-
-		if (!m)
-		{
-			if (isNaN(width))
-				width = preferredWidth;
-			if (isNaN(height))
-				height = preferredHeight;
-
-			setActualSize(width, height);
-			return;
-		}
-
-		var fitSize:Point = MatrixUtil.fitBounds(width, height, m,
-												 preferredWidth,
-												 preferredHeight,
-												 getMinBoundsWidth(false),
-												 getMinBoundsHeight(false),
-												 getMaxBoundsWidth(false),
-												 getMaxBoundsWidth(false));
-
-		// If we couldn't fit at all, default to the minimum size
-		if (!fitSize)
-			setActualSize(preferredWidth, preferredHeight);
-		else
-			setActualSize(fitSize.x, fitSize.y);
-    }
-
-	/**
-	 *  @inheritDoc
-	 *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-	 */
-	public function getLayoutMatrix():Matrix
-	{
+        var m:Matrix = postLayoutTransform ? nonDeltaLayoutMatrix() : null;
+
+        if (!m)
+        {
+            if (isNaN(width))
+                width = preferredWidth;
+            if (isNaN(height))
+                height = preferredHeight;
+
+            setActualSize(width, height);
+            return;
+        }
+
+        var fitSize:Point = MatrixUtil.fitBounds(width, height, m,
+            preferredWidth,
+            preferredHeight,
+            getMinBoundsWidth(false),
+            getMinBoundsHeight(false),
+            getMaxBoundsWidth(false),
+            getMaxBoundsWidth(false));
+
+        // If we couldn't fit at all, default to the minimum size
+        if (!fitSize)
+            setActualSize(preferredWidth, preferredHeight);
+        else
+            setActualSize(fitSize.x, fitSize.y);
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function getLayoutMatrix():Matrix
+    {
         if (_layoutFeatures != null || super.transform.matrix == null)
         {
             // TODO: this is a workaround for a situation in which the
@@ -2053,17 +2091,17 @@
                 initAdvancedLayoutFeatures();

             // esg: _layoutFeatures keeps a single internal copy of the layoutMatrix.
-			// since this is an internal class, we don't need to worry about developers
-			// accidentally messing with this matrix, _unless_ we hand it out. Instead,
-			// we hand out a clone.
-			return _layoutFeatures.layoutMatrix.clone();
-		}
-		else
-		{
-			// flash also returns copies.
-			return super.transform.matrix;
-		}
-	}
+            // since this is an internal class, we don't need to worry about developers
+            // accidentally messing with this matrix, _unless_ we hand it out. Instead,
+            // we hand out a clone.
+            return _layoutFeatures.layoutMatrix.clone();
+        }
+        else
+        {
+            // flash also returns copies.
+            return super.transform.matrix;
+        }
+    }

     /**
      *  @inheritDoc
@@ -2109,20 +2147,20 @@

     /**
      *  @inheritDoc
-     *
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10
-	 *  @playerversion AIR 1.5
-	 *  @productversion Flex 4
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get hasLayoutMatrix3D():Boolean
     {
         return _layoutFeatures ? _layoutFeatures.layoutIs3D : false;
     }
-
-    /**
-     *  @inheritDoc
-     *
+
+    /**
+     *  @inheritDoc
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10
      *  @playerversion AIR 1.5
@@ -2132,25 +2170,25 @@
     {
         return _layoutFeatures ? _layoutFeatures.is3D : false;
     }
-
-	/**
-	 *  @inheritDoc
-	 *
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10
-	 *  @playerversion AIR 1.5
-	 *  @productversion Flex 4
-	 */
-	public function getLayoutMatrix3D():Matrix3D
-	{
-		if (_layoutFeatures == null)
-			initAdvancedLayoutFeatures();
-		// esg: _layoutFeatures keeps a single internal copy of the layoutMatrix.
-		// since this is an internal class, we don't need to worry about developers
-		// accidentally messing with this matrix, _unless_ we hand it out. Instead,
-		// we hand out a clone.
-		return _layoutFeatures.layoutMatrix3D.clone();
-	}
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function getLayoutMatrix3D():Matrix3D
+    {
+        if (_layoutFeatures == null)
+            initAdvancedLayoutFeatures();
+        // esg: _layoutFeatures keeps a single internal copy of the layoutMatrix.
+        // since this is an internal class, we don't need to worry about developers
+        // accidentally messing with this matrix, _unless_ we hand it out. Instead,
+        // we hand out a clone.
+        return _layoutFeatures.layoutMatrix3D.clone();
+    }

     /**
      *  Similarly to the layoutMatrix3D property, sets the layout Matrix3D, but
@@ -2177,10 +2215,10 @@
         if (invalidateLayout)
             invalidateParentSizeAndDisplayList();
     }
-
+
     /**
      * @copy mx.core.ILayoutElement#transformAround
-     *
+     *
      *  @langversion 3.0
      *  @playerversion Flash 9
      *  @playerversion AIR 1.1
@@ -2199,20 +2237,20 @@
             // TODO (chaase): should provide a way to return to having no
             // layoutFeatures if we call this later with a more trivial
             // situation
-            var needAdvancedLayout:Boolean =
-                (scale != null && ((!isNaN(scale.x) && scale.x != 1) ||
+            var needAdvancedLayout:Boolean =
+                (scale != null && ((!isNaN(scale.x) && scale.x != 1) ||
                     (!isNaN(scale.y) && scale.y != 1) ||
-                    (!isNaN(scale.z) && scale.z != 1))) ||
-                (rotation != null && ((!isNaN(rotation.x) && rotation.x != 0) ||
+                    (!isNaN(scale.z) && scale.z != 1))) ||
+                (rotation != null && ((!isNaN(rotation.x) && rotation.x != 0) ||
                     (!isNaN(rotation.y) && rotation.y != 0) ||
-                    (!isNaN(rotation.z) && rotation.z != 0))) ||
+                    (!isNaN(rotation.z) && rotation.z != 0))) ||
                 (translation != null && translation.z != 0 && !isNaN(translation.z)) ||
                 postLayoutScale != null ||
                 postLayoutRotation != null ||
                 (postLayoutTranslation != null &&
                     (postLayoutTranslation.x != translation.x ||
-                     postLayoutTranslation.y != translation.y ||
-                     postLayoutTranslation.z != translation.z));
+                        postLayoutTranslation.y != translation.y ||
+                        postLayoutTranslation.z != translation.z));
             if (needAdvancedLayout)
                 initAdvancedLayoutFeatures();
         }
@@ -2230,8 +2268,8 @@
                 if (xformPt == null)
                     xformPt = new Point();
                 xformPt.x = transformCenter.x;
-                xformPt.y = transformCenter.y;
-                var xformedPt:Point =
+                xformPt.y = transformCenter.y;
+                var xformedPt:Point =
                     transform.matrix.transformPoint(xformPt);
             }
             if (rotation != null && !isNaN(rotation.z))
@@ -2240,7 +2278,7 @@
             {
                 scaleX = scale.x;
                 scaleY = scale.y;
-            }
+            }
             if (transformCenter == null)
             {
                 if (translation != null)
@@ -2254,8 +2292,8 @@
                 if (xformPt == null)
                     xformPt = new Point();
                 xformPt.x = transformCenter.x;
-                xformPt.y = transformCenter.y;
-                var postXFormPoint:Point =
+                xformPt.y = transformCenter.y;
+                var postXFormPoint:Point =
                     transform.matrix.transformPoint(xformPt);
                 if (translation != null)
                 {
@@ -2265,7 +2303,7 @@
                 else
                 {
                     x += xformedPt.x - postXFormPoint.x;
-                    y += xformedPt.y - postXFormPoint.y;
+                    y += xformedPt.y - postXFormPoint.y;
                 }
             }
         }
@@ -2273,65 +2311,65 @@

     /**
      * A utility method to transform a point specified in the local
-     * coordinates of this object to its location in the object's parent's
-     * coordinates. The pre-layout and post-layout result will be set on
+     * coordinates of this object to its location in the object's parent's
+     * coordinates. The pre-layout and post-layout result will be set on
      * the <code>position</code> and <code>postLayoutPosition</code>
      * parameters, if they are non-null.
-     *
+     *
      * @param localPosition The point to be transformed, specified in the
      * local coordinates of the object.
      * @position A Vector3D point that will hold the pre-layout
      * result. If null, the parameter is ignored.
      * @postLayoutPosition A Vector3D point that will hold the post-layout
      * result. If null, the parameter is ignored.
-     *
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
     public function transformPointToParent(localPosition:Vector3D,
-                                           position:Vector3D,
+                                           position:Vector3D,
                                            postLayoutPosition:Vector3D):void
-	{
-		if (_layoutFeatures != null)
-		{
-			_layoutFeatures.transformPointToParent(true, localPosition,
-				position, postLayoutPosition);
-		}
-		else
-		{
-			if (xformPt == null)
-				xformPt = new Point();
-			if (localPosition)
-			{
-				xformPt.x = localPosition.x;
-				xformPt.y = localPosition.y;
-			}
-			else
-			{
-				xformPt.x = 0;
-				xformPt.y = 0;
-			}
-			var tmp:Point = (transform.matrix != null) ?
-				transform.matrix.transformPoint(xformPt) :
-				xformPt;
-			if (position != null)
-			{
-				position.x = tmp.x;
-				position.y = tmp.y;
-				position.z = 0;
-			}
-			if (postLayoutPosition != null)
-			{
-				postLayoutPosition.x = tmp.x;
-				postLayoutPosition.y = tmp.y;
-				postLayoutPosition.z = 0;
-			}
-		}
-	}
-
-	/**
+    {
+        if (_layoutFeatures != null)
+        {
+            _layoutFeatures.transformPointToParent(true, localPosition,
+                position, postLayoutPosition);
+        }
+        else
+        {
+            if (xformPt == null)
+                xformPt = new Point();
+            if (localPosition)
+            {
+                xformPt.x = localPosition.x;
+                xformPt.y = localPosition.y;
+            }
+            else
+            {
+                xformPt.x = 0;
+                xformPt.y = 0;
+            }
+            var tmp:Point = (transform.matrix != null) ?
+                transform.matrix.transformPoint(xformPt) :
+                xformPt;
+            if (position != null)
+            {
+                position.x = tmp.x;
+                position.y = tmp.y;
+                position.z = 0;
+            }
+            if (postLayoutPosition != null)
+            {
+                postLayoutPosition.x = tmp.x;
+                postLayoutPosition.y = tmp.y;
+                postLayoutPosition.z = 0;
+            }
+        }
+    }
+
+    /**
      *  Transform the element's size.
      *
      *  @param width The target pre-transform width.
@@ -2353,7 +2391,7 @@
         if (postLayoutTransform)
         {
             var m:Matrix = nonDeltaLayoutMatrix();
-			if (m)
+            if (m)
             {
                 var size:Point = new Point(width, height);
                 width = MatrixUtil.transformSize(size, m).x;
@@ -2385,7 +2423,7 @@
         if (postLayoutTransform)
         {
             var m:Matrix = nonDeltaLayoutMatrix();
-			if (m)
+            if (m)
             {
                 var size:Point = new Point(width, height);
                 height = MatrixUtil.transformSize(size, m).y;


Transferred from the Adobe Open Source Subversion Repository

Revision: 5385
Author:   chaase@adobe.com
Date:     2009-03-18T14:59:34.749796Z

Log Message:
-----------
Fixes to deal with startDelay being incorporated correctly into the underlying keyframes of an animation.

QE Notes: None
Doc Notes: None
Bugs: SDK-19982
Reviewer: Corey
Testing: checkintests, Mustella Effects, ListDataEffects, mx/effects

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/MotionPath.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/AnimationProperty.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransform.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1283468 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/effects/AnimateTransform.as
+++ frameworks/projects/spark/src/spark/effects/AnimateTransform.as
@@ -651,19 +651,20 @@
         {
             var instanceAnimProps:Array = [];
             for (i = 0; i < animationProperties.length; ++i)
+            {
                 instanceAnimProps[i] = animationProperties[i].clone();
-            if (startDelay != 0)
-            {
-                for (i = 0; i < animationProperties.length; ++i)
+                var mp:MotionPath = MotionPath(instanceAnimProps[i]);
+                if (mp.keyframes)
                 {
-                    var mp:MotionPath = MotionPath(instanceAnimProps[i]);
-                    if (mp.keyframes)
+                    for (var j:int = 0; j < mp.keyframes.length; ++j)
                     {
-                        for (var j:int = 0; j < mp.keyframes.length; ++j)
-                        {
-                            var kf:KeyFrame = KeyFrame(mp.keyframes[j]);
+                        var kf:KeyFrame = KeyFrame(mp.keyframes[j]);
+                        // NaN for the time is used by AnimationProperty as a
+                        // placeholder for the end time of the effect
+                        if (isNaN(kf.time))
+                            kf.time = duration;
+                        if (startDelay != 0)
                             kf.time += startDelay;
-                        }
                     }
                 }
             }


Transferred from the Adobe Open Source Subversion Repository

Revision: 20270
Author:   klin@adobe.com
Date:     2011-02-10T17:56:36.074517Z

Log Message:
-----------
Converting two FIXMEs to TODOs.

QE notes: No
Doc notes: No
Bugs: No
Reviewer: Ryan
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/FormLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/ConstraintLayout.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1285022 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/layouts/ConstraintLayout.as
+++ frameworks/projects/spark/src/spark/layouts/ConstraintLayout.as
@@ -1068,7 +1068,7 @@

                 // remainingSpace -= size;
             }
-            // FIXME (klin): What do we do if there's remainingSpace after all this?
+            // TODO (klin): What do we do if there's remainingSpace after all this?
         }
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 2998
Author:   hmuller@adobe.com
Date:     2008-08-26T15:32:00.001204Z

Log Message:
-----------
In the layout classes, only set the Group layoutTarget's scrollRect
when a scrolling request is implied, i.e. when
vertical,horizontalScrollPosition isn't zero, or when the Group's
contentWidth,Height is bigger than its unscaled width,height.
At the moment, the code for doing this is a static function on BasicLayout
that's also used by Vertical,HorizontalLayout.  If a layout utilities
class was defined, BasicLayout.setScrollRect() should move there.

This change should mitigate the number of bugs caused by
unconditionally clipping Groups to their width,height.  Unfortunately,
because of line stroke widths and anti-aliasing, many skins
currently draw outside of their measured bounds.

QE: No
Doc: No
Checkintests: Pass
Reviewer: Chet

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/VerticalLayout.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1285063 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
+++ frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
@@ -457,19 +457,7 @@
         if (explicitColumnCount == -1)
         	setColumnCount(visibleColumns);

-        var r:Rectangle = layoutTarget.scrollRect;
-        if (r != null)
-        {
-            r.width = unscaledWidth;
-            r.height = unscaledHeight;
-            layoutTarget.scrollRect = r;
-        }
-        else
-        {
-        	var rx:Number = layoutTarget.horizontalScrollPosition;
-        	var ry:Number = layoutTarget.verticalScrollPosition;
-        	layoutTarget.scrollRect = new Rectangle(rx, ry, unscaledWidth, unscaledHeight);
-        }
+        BasicLayout.setScrollRect(layoutTarget, unscaledWidth, unscaledHeight);
     }


Fix test typo.

Fix test typo.

--- test/src/FRESteamWorksTest.as
+++ test/src/FRESteamWorksTest.as
@@ -867,7 +867,7 @@
 					break;
 				case SteamConstants.RESPONSE_OnMicroTxnAuthorizationResponse:
 					log("RESPONSE_OnMicroTxnAuthorizationResponse: " + e.response);
-					log("MicroTxnOrderIDResult() == " + (Steamworks.MicroTxnOrderIDResult());
+					log("MicroTxnOrderIDResult() == " + Steamworks.microTxnOrderIDResult());
 					if(e.response != SteamResults.OK) {
 						log("FAILED!");
 					} else {


Added support for E4X filtering expressions


Transferred from the Adobe Open Source Subversion Repository

Revision: 11027
Author:   dloverin@adobe.com
Date:     2009-10-20T15:50:09.018295Z

Log Message:
-----------
Changes to enable using multiple style managers.

Multiple style managers are not the default yet. Can be enabled by compiling with -create-style-manager.

QE notes: None.
Doc notes: None.
Bugs:
Reviewer: Alex, Paul
Tests run: checkintests, all mustella
Is noteworthy for integration: Yes.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StylesContainer.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/as3/AbstractSyntaxTreeUtil.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/rep/MxmlDocument.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/MxmlConfiguration.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/InterfaceGenerator.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/dragClasses/DragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/FlexChangeEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/common/CompilerConfiguration.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleModule.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/halo/src/mx/skins/halo/BusyCursor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/StandardDefs.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/as3/binding/DataBindingExtension.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/gen/ClassDefLib.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/tools/dependencychecker/flex/tools/dependencychecker/FrameworkSwcDependencyRules.java</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSMergedStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/FormItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleDef.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleDef.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/BusyCursor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/ImplementationGenerator.java</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1269207 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/core/Application.as
+++ frameworks/projects/mx/src/mx/core/Application.as
@@ -1217,7 +1217,7 @@
             var rc:Number;
             var sc:Number;
             var globalSelector:CSSStyleDeclaration =
-                styleManager.getStyleDeclaration("global");
+                styleManager.getMergedStyleDeclaration("global");

             if (globalSelector)
             {


OPEN - issue REPRISE-55: Complete API documentation for core classes: UIObject, UIComponent, DocumentView, Application and UIRendererFactory
http://j.fork.de:8080/browse/REPRISE-55

	- doc: completed documentation of public methods in UIObject

git-svn-id: e38e7cdd6ace00d8230583a2d3b43e9a55f5c011@500 bc4816be-ef27-423a-9c4d-fc420be121a2

--- src/reprise/ui/UIObject.as
+++ src/reprise/ui/UIObject.as
@@ -616,7 +616,16 @@
 			return elements;
 		}

-
+		/**
+		 * Adds a display object Filter to the element
+		 *

+		 * UIObject keeps an internal copy of the filters Array, allowing for duplicate checking.
+		 *

+		 * This means that you can't add the same Filter multiple times.
+		 *
+		 * @param filter The Filter to add to the element
+		 * @see #removeFilter()
+		 */
 		public function addFilter(filter : Object) : void
 		{
 			if (!m_filters)
@@ -631,6 +640,18 @@
 			m_contentDisplay.filters = m_filters;
 		}

+		/**
+		 * Removes a display object Filter from the element
+		 *

+		 * UIObject keeps an internal copy of the filters Array, allowing for identity comparison
+		 * of Filters, as opposed to the internal Filter handling of DisplayObject.
+		 *

+		 * This means that it's possible to remove a Filter by supplying the original instance that
+		 * was added with addFilter().
+		 *
+		 * @param filter The Filter to add to the element
+		 * @see #addFilter()
+		 */
 		public function removeFilter(filter : Object) : void
 		{
 			if (!m_filters)
@@ -645,11 +666,18 @@
 			}
 		}

+		/**
+		 * Removes all currently applyed Filters from the element
+		 */
 		public function clearFilters() : void
 		{
 			m_contentDisplay.filters = null;
 		}
-
+
+		/**
+		 * Returns the elements path from the root element in a similar fashion to how
+		 * MovieClip::toString worked in AS2.
+		 */
 		public override function toString() : String
 		{
 			if (!root || this == m_rootElement)


Transferred from the Adobe Open Source Subversion Repository

Revision: 7163
Author:   aharui@adobe.com
Date:     2009-05-21T02:19:55.813792Z

Log Message:
-----------
Initial checkin of frame 1 cleanup.  In an RSL linkage, more classes will now come from the RSL because they are no longer needed in frame 1, and the size of the application SWF will be smaller.

QE Notes: None
Doc Notes: Maybe.  All new classes should be undocumented, but it might be worth checking that and any changes to interfaces
Bugs:
Reviewer: darrell
tests: checkintests mustella/MarshallPlan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileListItemRenderer.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/ActiveWindowManager.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/LayoutManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/RSLEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/MarshalPopUpData.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IEmbeddedFontRegistry.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/StandardDefs.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/EventProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextFormat.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/tools/dependencychecker/flex/tools/dependencychecker/FrameworkSwcDependencyRules.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/EmbeddedFontRegistry.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ToolTipManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/EmbeddedFont.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/tools/PreLink.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/preloaders/Preloader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/ResourceManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ResourceModuleRSLItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ISWFBridgeProvider.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/FocusManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/ResourceManager.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IMarshalSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/EventListenerRequest.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/ToolTipManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/tools/dependencychecker/frameworkSwcExceptionsList.txt</path>
<path kind="file" action="M">/flex/sdk/trunk/mustella/MustellaResultsParser.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Alert.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/ChildManager.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/MarshallPlan.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManagerGlobals.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/SWFBridgeGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/alertClasses/AlertForm.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/TreeItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ISystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework_textLayout/src/mx/core/UITLFTextField.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/DragManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/Request.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/PopUpButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IActiveWindowManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/FocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/SimpleText.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/PopUpManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManagerProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/messaging/config/LoaderConfig.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IFocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/preloaders/DownloadProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ScrollControlBase.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ISystemManagerChildManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridItemRenderer.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/CursorManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManagerImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/PopUpData.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ISWFBridgeGroup.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1268305 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/controls/MenuBar.as
+++ frameworks/projects/mx/src/mx/controls/MenuBar.as
@@ -1835,19 +1835,7 @@
         // already exist.
         var menu:Menu = getMenuAt(index);
         var sm:ISystemManager = systemManager.topLevelSystemManager;
-        var sbRoot:DisplayObject = sm.getSandboxRoot();
-        var screen:Rectangle;
-
-        if (sm != sbRoot)
-        {
-            var request:InterManagerRequest = new InterManagerRequest(InterManagerRequest.SYSTEM_MANAGER_REQUEST,
-                                    false, false,
-                                    "getVisibleApplicationRect");
-            sbRoot.dispatchEvent(request);
-            screen = Rectangle(request.value);
-        }
-        else
-            screen = sm.getVisibleApplicationRect();
+        var screen:Rectangle = sm.getVisibleApplicationRect();

         UIComponentGlobals.layoutManager.validateClient(menu, true);

@@ -1863,7 +1851,7 @@
             pt.y += item.height + 1;
         if (pt.x + menu.getExplicitOrMeasuredWidth() > screen.width + screen.x)
             pt.x = screen.x + screen.width - menu.getExplicitOrMeasuredWidth();
-        pt = sbRoot.globalToLocal(pt);
+        pt = sm.getSandboxRoot().globalToLocal(pt);

         // If inside an ACB, slight offset looks much better.
         if (isInsideACB)


Transferred from the Adobe Open Source Subversion Repository

Revision: 23247
Author:   cframpto@adobe.com
Date:     2011-12-20T19:21:13.134833Z

Log Message:
-----------
Remove ADOBE SYSTEMS license and replace with Apache license in headers - frameworks.  A 2nd pass will be needed to get the files not handled up by the scripts.

Modified Paths:
--------------
4959 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1269222 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/core/Application.as
+++ frameworks/projects/mx/src/mx/core/Application.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2003-2007 Adobe Systems Incorporated
-//  All Rights Reserved.
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
 //
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////


Rename local variable in method Cloner.clone().

--- dolly-framework/src/main/actionscript/dolly/Cloner.as
+++ dolly-framework/src/main/actionscript/dolly/Cloner.as
@@ -39,7 +39,7 @@
 			);
 		}

-		const clone:* = new (type.clazz)();
+		const clonedInstance:* = new (type.clazz)();

 		// Find all public writable fields in a hierarchy of a source object
 		// and assign their values to a clone object.
@@ -47,10 +47,10 @@
 		var name:String;
 		for each(var field:Field in fieldsToClone) {
 			name = field.name;
-			clone[name] = source[name];
+			clonedInstance[name] = source[name];
 		}

-		return clone;
+		return clonedInstance;
 	}
 }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 20920
Author:   build@adobe.com
Date:     2011-03-18T19:54:14.958635Z

Log Message:
-----------
Version update to 4.5.1

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/airspark/src/spark/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/automation_air/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/flex-config.xml</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/automation_spark/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/automation/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark_dmv/src/spark/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/rpc/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/mx/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/charts/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/automation_flashflexkit/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/automation_dmv/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/modules/compiler/src/java/flex2/tools/VersionInfo.java</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/advancedgrids/src/mx/core/Version.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1251678 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/automation/src/mx/core/Version.as
+++ frameworks/projects/automation/src/mx/core/Version.as
@@ -15,4 +15,4 @@
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.5.0.0";
+mx_internal static const VERSION:String = "4.5.1.0";


Transferred from the Adobe Open Source Subversion Repository

Revision: 23247
Author:   cframpto@adobe.com
Date:     2011-12-20T19:21:13.134833Z

Log Message:
-----------
Remove ADOBE SYSTEMS license and replace with Apache license in headers - frameworks.  A 2nd pass will be needed to get the files not handled up by the scripts.

Modified Paths:
--------------
4959 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1252853 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/charts/src/mx/charts/ChartItem.as
+++ frameworks/projects/charts/src/mx/charts/ChartItem.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////


Transferred from the Adobe Open Source Subversion Repository

Revision: 5389
Author:   mhorn@adobe.com
Date:     2009-03-18T16:09:24.692896Z

Log Message:
-----------
various ASDoc updates

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Button.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Text.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/CollectionEventKind.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/GradientBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/TextView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1267519 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/containers/Accordion.as
+++ frameworks/projects/mx/src/mx/containers/Accordion.as
@@ -405,6 +405,7 @@
  *    headerRenderer="IFactory"
  *    historyManagementEnabled="true|false"
  *    resizeToContent="false|true"
+ *    selectedChild"A reference to the first child"
  *    selectedIndex="undefined"
  *
  *    Styles


Transferred from the Adobe Open Source Subversion Repository

Revision: 4849
Author:   jimurphy@adobe.com
Date:     2009-02-05T15:00:22.254099Z

Log Message:
-----------
Merged 3.x revisions 4842,4847 -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/AbstractProducer.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/wsdl/WSDL.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AbstractOperation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/XMLDecoder.as</path>
<path kind="file" copyfrom-path="/flex/sdk/branches/3.x/frameworks/projects/rpc/src/mx/rpc/http/mxml/HTTPMultiService.as" copyfrom-rev="4847" action="A">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/mxml/HTTPMultiService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/wsdl/WSDLLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MessageAgent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1274478 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/rpc/src/mx/rpc/wsdl/WSDLLoader.as
+++ frameworks/projects/rpc/src/mx/rpc/wsdl/WSDLLoader.as
@@ -139,7 +139,7 @@
             }
             else
             {
-                wsdl = new WSDL(xml);
+                wsdl = new WSDL(xml, topLevelWSDL ? topLevelWSDL.schemaManager : null);
                 // FIXME: An import without a valid namespace is an error!
                 parent.addImport(ns, wsdl);
             }
@@ -252,8 +252,13 @@

             schemaLoader.schemaImports(schema, parentLocation, schemaManager);

-            if (wsdl != topLevelWSDL)
-                topLevelWSDL.addSchema(schema);
+            // Fix for SDK-18926. Commenting out the following two lines that would add
+            // the imported schema to the parent wsdl's SchemaManager. topLevelWSDL already
+            // has information about this schema, since the same SchemaManager instance is
+            // used across nested wsdls (see SDK-18926 comment in WSDL.as). Adding this
+            // schema again would now cause a loop.
+//            if (wsdl != topLevelWSDL)
+//                topLevelWSDL.addSchema(schema);
         }
     }