Transferred from the Adobe Open Source Subversion Repository

Revision: 10220
Author:   egeorgie@adobe.com
Date:     2009-09-14T00:39:59.323581Z

Log Message:
-----------
Fix http://bugs.adobe.com/jira/browse/SDK-21976 horizontal/vertical/tile layouts should prevent half-pixel locations

Fix: Vertical, Horizontal layouts round up element layout bounds to a whole pixel during measure/updateDisplayList. Does not affect virtualization.

QE notes: None
Doc notes: None
Bugs: SDK-21976
Reviewer: Chet
Tests run: checkintests, mustella (layout, gumbo core)
Is noteworthy for integration: No

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

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

--- frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
+++ frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
@@ -1030,10 +1030,10 @@

             // Consider the height of each element, inclusive of those outside
             // the requestedColumnCount range.
-            var height:Number = elt.getPreferredBoundsHeight();
+            var height:Number = Math.ceil(elt.getPreferredBoundsHeight());
             preferredHeight = Math.max(preferredHeight, height);
             var flexibleHeight:Boolean = !isNaN(elt.percentHeight) || verticalAlign == VerticalAlign.JUSTIFY;
-            minHeight = Math.max(minHeight, flexibleHeight ? elt.getMinBoundsHeight() : height);
+            minHeight = Math.max(minHeight, flexibleHeight ? Math.ceil(elt.getMinBoundsHeight()) : height);

             // If requestedColumnCount is specified, no need to consider the width
             // of cols outside the bounds of the "requested" range. Otherwise, we
@@ -1041,8 +1041,9 @@
             if ((reqEltCount == -1) || ((reqEltCount != -1) && eltInLayoutCount < requestedColumnCount))
             {
                 var width:Number = isNaN(fixedColumnWidth) ? elt.getPreferredBoundsWidth() : fixedColumnWidth;
+                width = Math.ceil(width); // Round up to give it a whole pixel.
                 preferredWidth += width;
-                minWidth += (isNaN(elt.percentWidth)) ? width : elt.getMinBoundsWidth();
+                minWidth += (isNaN(elt.percentWidth)) ? width : Math.ceil(elt.getMinBoundsWidth());
                 eltInLayoutCount += 1;
             }
         }
@@ -1568,7 +1569,7 @@
                 else
                     layoutElementHeight = layoutElement.getPreferredBoundsHeight();

-                containerHeight = Math.max(containerHeight, layoutElementHeight);
+                containerHeight = Math.max(containerHeight, Math.ceil(layoutElementHeight));
             }
         }

@@ -1604,15 +1605,16 @@
                 continue;

             // Set the layout element's position
-            var y:Number = y0 + (containerHeight - layoutElement.getLayoutBoundsHeight()) * vAlign;
+            var dx:Number = Math.ceil(layoutElement.getLayoutBoundsWidth());
+            var dy:Number = Math.ceil(layoutElement.getLayoutBoundsHeight());
+
+            var y:Number = y0 + (containerHeight - dy) * vAlign;
             // In case we have VerticalAlign.MIDDLE we have to round
             if (vAlign == 0.5)
                 y = Math.round(y);
             layoutElement.setLayoutBoundsPosition(x, y);

             // Update maxX,Y, first,lastVisibleIndex, and x
-            var dx:Number = layoutElement.getLayoutBoundsWidth();
-            var dy:Number = layoutElement.getLayoutBoundsHeight();
             maxX = Math.max(maxX, x + dx);
             maxY = Math.max(maxY, y + dy);
             if (!clipAndEnableScrolling ||
@@ -1664,7 +1666,7 @@
         var layoutElement:ILayoutElement;

         // columnWidth can be expensive to compute
-        var cw:Number = (variableColumnWidth) ? 0 : columnWidth;
+        var cw:Number = (variableColumnWidth) ? 0 : Math.ceil(columnWidth);
         var count:uint = target.numElements;
         var totalCount:uint = count; // number of elements to use in gap calculation

@@ -1697,7 +1699,7 @@
                 sizeLayoutElement(layoutElement, height, verticalAlign,
                                   restrictedHeight, NaN, variableColumnWidth, cw);

-                spaceToDistribute -= layoutElement.getLayoutBoundsWidth();
+                spaceToDistribute -= Math.ceil(layoutElement.getLayoutBoundsWidth());
             }
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 6295
Author:   egreenfi@adobe.com
Date:     2009-04-27T19:25:10.102526Z

Log Message:
-----------
- Added a workaround for 3D bugs in 10.0 release of flash player when multiplying vectors against 3D matrices.
- integrated offset animation from Animate3D class into AnimateTransform class. AnimateTRansform can now correctly capture and animate values for target.offsets as well as target.
- integrated projection matrix management from Animate3D into AnimateTransform and subclasses.
- added affectsLayout flag to subclasses of AnimateTRansform.  THeir parameters can now optionally be used to animate the offsets of the target.
- setup correct defaults on all 3D subclasses of AnimateTransform, so they don't affect layout and do modify the local projection matrix by default.

Reviewer: Chet
QA: Yes!
Doc: Yes.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformRotate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformMove.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformScale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformMove3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformRotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformScale3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateTransformInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/AdvancedLayoutFeatures.as</path>

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

--- frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransformInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransformInstance.as
@@ -11,14 +11,20 @@

 package spark.effects.supportClasses
 {
+import flash.display.DisplayObject;
+import flash.geom.PerspectiveProjection;
+import flash.geom.Point;
 import flash.geom.Vector3D;

+import mx.core.ILayoutElement;
 import mx.core.mx_internal;
 import spark.effects.animation.Animation;
 import mx.effects.Effect;
 import spark.effects.Animate;
 import spark.effects.easing.IEaser;
 import spark.effects.easing.Linear;
+
+import mx.core.UIComponent;

 import spark.effects.KeyFrame;
 import spark.effects.MotionPath;
@@ -69,10 +75,53 @@
     /**
      *  @private
      */
+    public var applyLocalProjection:Boolean = true;
+    /**
+     *  @private
+     */
+    public var autoCenterProjection:Boolean = true;
+    /**
+     *  @private
+     */
+    public var removeLocalProjectionWhenComplete:Boolean = false;
+    /**
+     *  @private
+     */
+    public var fieldOfView:Number;
+    /**
+     *  @private
+     */
+    public var focalLength:Number;
+    /**
+     *  @private
+     */
+    public var projectionX:Number = 0;
+    /**
+     *  @private
+     */
+    public var projectionY:Number = 0;
+
+    /**
+     *  @private
+     */
+    public var removeLocalPerspectiveOnEnd:Boolean = false;
+
+    /**
+     *  @private
+     */
+    protected var originalProjection:PerspectiveProjection;
+
+
+    /**
+     *  @private
+     */
     private static var TRANSFORM_PROPERTIES:Array =
         ["translationX", "translationY", "translationZ",
          "rotationX", "rotationY", "rotationZ",
-         "scaleX", "scaleY", "scaleZ"];
+         "scaleX", "scaleY", "scaleZ",
+        "postLayoutTranslationX", "postLayoutTranslationY", "postLayoutTranslationZ",
+         "postLayoutRotationX", "postLayoutRotationY", "postLayoutRotationZ",
+         "postLayoutScaleX", "postLayoutScaleY", "postLayoutScaleZ"];

     /**
      *  Flag to indicate that this single instance of the transform-related
@@ -108,9 +157,9 @@
     private var currentValues:Object = {rotationX:NaN, rotationY:NaN, rotationZ:NaN,
                                         scaleX:NaN, scaleY:NaN, scaleZ:NaN,
                                         translationX:NaN, translationY:NaN, translationZ:NaN,
-                                        _rotationX:NaN, _rotationY:NaN, _rotationZ:NaN,
-                                        _scaleX:NaN, _scaleY:NaN, _scaleZ:NaN,
-                                        _translationX:NaN, _translationY:NaN, _translationZ:NaN};
+                                        postLayoutRotationX:NaN, postLayoutRotationY:NaN, postLayoutRotationZ:NaN,
+                                        postLayoutScaleX:NaN, postLayoutScaleY:NaN, postLayoutScaleZ:NaN,
+                                        postLayoutTranslationX:NaN, postLayoutTranslationY:NaN, postLayoutTranslationZ:NaN};

     /**
      *  Utility structures used in applyValues()
@@ -118,6 +167,10 @@
     private static var scale:Vector3D = new Vector3D();
     private static var rotation:Vector3D = new Vector3D();
     private static var position:Vector3D = new Vector3D();
+
+    private static var offsetRotation:Vector3D = new Vector3D();
+    private static var offsetTranslation:Vector3D = new Vector3D();
+    private static var offsetScale:Vector3D = new Vector3D();

     //--------------------------------------------------------------------------
     //
@@ -153,6 +206,7 @@
      *  @productversion Flex 4
      */
     public var transformCenter:Vector3D;
+

     //--------------------------------------------------------------------------
     //
@@ -295,6 +349,76 @@
         motionPaths.push(newMotionPath);
     }

+   /**
+     *  Documentation is not currently available.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    protected function initProjection():void
+    {
+        if(applyLocalProjection)
+        {
+            // TODO (rfrishbe): need to check for IUIComponent?
+            var parent:UIComponent = target.parent;
+
+            if(parent != null)
+            {
+
+                originalProjection = parent.$transform.perspectiveProjection;
+                var p:PerspectiveProjection = new PerspectiveProjection();
+                if(!isNaN(fieldOfView))
+                    p.fieldOfView = fieldOfView;
+                if(!isNaN(focalLength))
+                    p.focalLength = focalLength;
+
+                if(autoCenterProjection)
+                {
+                    var le:ILayoutElement = target as ILayoutElement;
+                    p.projectionCenter = new Point(le.getLayoutBoundsX() + le.getLayoutBoundsWidth()/2,
+                                                   le.getLayoutBoundsY() + le.getLayoutBoundsHeight()/2);
+                }
+                else
+                {
+                    p.projectionCenter = new Point(projectionX, projectionY);
+                }
+
+                parent.$transform.perspectiveProjection = p;
+            }
+        }
+
+    }
+
+   /**
+     *  Documentation is not currently available.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    protected function removeProjection():void
+    {
+        if(applyLocalProjection && removeLocalProjectionWhenComplete)
+        {
+            // TODO (rfrishbe): need to check for IUIComponent?
+            // as well if checking for IVisualElement?
+            var parent:DisplayObject= target.parent as DisplayObject;
+
+            if(parent is UIComponent)
+            {
+                (parent as UIComponent).$transform.perspectiveProjection = originalProjection;
+            }
+            else if (parent != null)
+            {
+                parent.transform.perspectiveProjection = originalProjection;
+            }
+        }
+    }
+
+
     // TODO (chaase): This probably belongs at the AnimateTransform level,
     // and make sure that it only kicks in when AnimateTransform is used
     // explicitly; Someone performing a Move may not also want to
@@ -370,38 +494,92 @@
     /**
      * @private
      *
+     */
+    override public function animationStart(animation:Animation):void
+    {
+        initProjection();
+        super.animationStart(animation);
+    }
+
+    /**
+     * @private
+     *
+     */
+    override public function animationEnd(animation:Animation):void
+    {
+        removeProjection();
+        super.animationEnd(animation);
+    }
+
+
+    /**
+     * @private
+     *
      * The superclass version of getCurrentValue() will only get values that
      * actually exist on the target (as properties or styles). But we need to
      * be able to get the translationXYZ values, which are fake values that
      * we derive from the transform-related properties of the target.
      * So we override this function to calculate and return the translation
      * values appropriately.
-     */
+     */
     override protected function getCurrentValue(property:String):*
     {
         // TODO (chaase): we're recalculating the transform for every
         // component of the translation. We should store/retrieve the
         // translation property as a structure instead of separate values
-        if (property == "translationX" || property == "translationY" ||
-            property == "translationZ")
-        {
-            var position:Vector3D = new Vector3D();
-            var postLayoutPosition:Vector3D = new Vector3D();
-            var xformCenter:Vector3D = (transformCenter) ?
-                transformCenter :
-                defaultTransformCenter;
-            target.transformPointToParent(xformCenter,
-                position, postLayoutPosition);
-            if (property == "translationX")
-                return position.x;
-            if (property == "translationY")
-                return position.y;
-            if (property == "translationZ")
-                return position.z;
-        }
-        else
-        {
-            return super.getCurrentValue(property);
+		switch(property)
+		{
+
+			case "translationX":
+			case "translationY":
+			case "translationZ":
+	        {
+	            var position:Vector3D = new Vector3D();
+	            var xformCenter:Vector3D = (transformCenter) ?
+	                transformCenter :
+	                defaultTransformCenter;
+	            target.transformPointToParent(xformCenter,
+	                position, null);
+	            if (property == "translationX")
+	                return position.x;
+	            if (property == "translationY")
+	                return position.y;
+	            if (property == "translationZ")
+	                return position.z;
+	            break;
+	        }
+	        case "postLayoutTranslationX":
+			case "postLayoutTranslationY":
+			case "postLayoutTranslationZ":
+	        {
+	            var postLayoutPosition:Vector3D = new Vector3D();
+	            xformCenter  = (transformCenter) ?
+	                transformCenter :
+	                defaultTransformCenter;
+	            target.transformPointToParent(xformCenter,
+	                null, postLayoutPosition);
+	            if (property == "postLayoutTranslationX")
+	                return postLayoutPosition.x;
+	            if (property == "postLayoutTranslationY")
+	                return postLayoutPosition.y;
+	            if (property == "postLayoutTranslationZ")
+	                return postLayoutPosition.z;
+	            break;
+	        }
+	        case "postLayoutRotationX":
+	        	return (target.offsets == null)? 0:target.offsets.rotationX;
+	        case "postLayoutRotationY":
+	        	return (target.offsets == null)? 0:target.offsets.rotationY;
+	        case "postLayoutRotationZ":
+	        	return (target.offsets == null)? 0:target.offsets.rotationZ;
+	        case "postLayoutScaleX":
+	        	return (target.offsets == null)? 1:target.offsets.scaleX;
+	        case "postLayoutScaleY":
+	        	return (target.offsets == null)? 1:target.offsets.scaleY;
+	        case "postLayoutScaleZ":
+	        	return (target.offsets == null)? 1:target.offsets.scaleZ;
+	     	default:
+	            return super.getCurrentValue(property);
         }
     }

@@ -418,6 +596,10 @@
         var tmpScale:Vector3D;
         var tmpPosition:Vector3D;
         var tmpRotation:Vector3D;
+
+        var tmpOffsetTranslation:Vector3D;
+        var tmpOffsetRotation:Vector3D;
+        var tmpOffsetScale:Vector3D;

         // We override this function because we want to apply all values
         // simultaneously to perform our composite transform operation
@@ -469,8 +651,50 @@
             getCurrentValue("translationZ");
         tmpPosition = position;

+		if(target.offsets != null)
+		{
+	        if (!isNaN(currentValues.postLayoutRotationX) ||
+	            !isNaN(currentValues.postLayoutRotationY) ||
+	            !isNaN(currentValues.postLayoutRotationZ))
+	        {
+	            offsetRotation.x = !isNaN(currentValues.postLayoutRotationX) ?
+	                currentValues.postLayoutRotationX : getCurrentValue("postLayoutRotationX");
+	            offsetRotation.y = !isNaN(currentValues.postLayoutRotationY) ?
+	                currentValues.postLayoutRotationY : getCurrentValue("postLayoutRotationY");
+	            offsetRotation.z = !isNaN(currentValues.postLayoutRotationZ) ?
+	                currentValues.postLayoutRotationZ : getCurrentValue("postLayoutRotationZ");
+	            tmpOffsetRotation = offsetRotation;
+	        }
+
+	        if (!isNaN(currentValues.postLayoutScaleX) ||
+	            !isNaN(currentValues.postLayoutScaleY) ||
+	            !isNaN(currentValues.postLayoutScaleZ))
+	        {
+	            offsetScale.x = !isNaN(currentValues.postLayoutScaleX) ?
+	                currentValues.postLayoutScaleX : getCurrentValue("postLayoutScaleX");
+	            offsetScale.y = !isNaN(currentValues.postLayoutScaleY) ?
+	                currentValues.postLayoutScaleY : getCurrentValue("postLayoutScaleY");
+	            offsetScale.z = !isNaN(currentValues.postLayoutScaleZ) ?
+	                currentValues.postLayoutScaleZ : getCurrentValue("postLayoutScaleZ");
+	            tmpOffsetScale = offsetScale;
+	        }
+
+	        if (!isNaN(currentValues.postLayoutTranslationX) ||
+	            !isNaN(currentValues.postLayoutTranslationY) ||
+	            !isNaN(currentValues.postLayoutTranslationZ))
+	        {
+	            offsetTranslation.x = !isNaN(currentValues.postLayoutTranslationX) ?
+	                currentValues.postLayoutTranslationX : getCurrentValue("postLayoutTranslationX");
+	            offsetTranslation.y = !isNaN(currentValues.postLayoutTranslationY) ?
+	                currentValues.postLayoutTranslationY : getCurrentValue("postLayoutTranslationY");
+	            offsetTranslation.z = !isNaN(currentValues.postLayoutTranslationZ) ?
+	                currentValues.postLayoutTranslationZ : getCurrentValue("postLayoutTranslationZ");
+	            tmpOffsetTranslation  = offsetTranslation;
+	        }
+		}
+
         target.transformAround(transformCenter, tmpScale, tmpRotation,
-            tmpPosition);
+            tmpPosition,tmpOffsetScale,tmpOffsetRotation,tmpOffsetTranslation);
     }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 19242
Author:   aharui@adobe.com
Date:     2010-12-09T22:27:31.442236Z

Log Message:
-----------
Disable MEASURED_SIZE_PRELIMINARY if icon not used.  All fix up propagation of estimatedSizes

QE notes: none
Doc notes: none
Bugs: SDK-28658
Reviewer: Evtim
Tests run: checkintests mustella full run
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/core/Application.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/SkinnableContainerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorApplicationSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airspark/src/spark/components/Window.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorApplicationSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Application.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorApplicationSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorApplicationSkin.as
@@ -12,7 +12,12 @@
 package spark.skins.mobile
 {
 import mx.core.ClassFactory;
+import mx.core.IContainerInvalidating;
 import mx.core.IFactory;
+import mx.core.ILayoutElement;
+import mx.core.mx_internal;
+import mx.managers.ILayoutManagerContainerClient;
+use namespace mx_internal;

 import spark.components.ViewNavigatorApplication;
 import spark.components.ViewMenu;
@@ -95,19 +100,45 @@
         addChild(navigator);
     }

-	/**
-	 *  @private
-	 */
-	override public function validateEstimatedSizesOfChildren():void
-	{
-		navigator.setEstimatedSize(estimatedWidth, estimatedHeight);
-	}
+    /**
+     *  @private
+     */
+    override mx_internal function validateEstimatedSizesOfChild(child:ILayoutElement):void
+    {
+        var cw:Number;
+        var ch:Number;
+        var c:Number;
+        var oldcw:Number = child.estimatedWidth;
+        var oldch:Number = child.estimatedHeight;
+        // child navigator is constrained to the size of the skin
+        cw = estimatedWidth;
+        if (isNaN(cw) && !isNaN(explicitWidth))
+            cw = explicitWidth;
+        ch = estimatedHeight;
+        if (isNaN(ch) && !isNaN(explicitHeight))
+            ch = explicitHeight;
+
+        child.setEstimatedSize(cw, ch);
+        if (child is ILayoutManagerContainerClient)
+        {
+            var sameWidth:Boolean = isNaN(cw) && isNaN(oldcw) || cw == oldcw;
+            var sameHeight:Boolean = isNaN(ch) && isNaN(oldch) || ch == oldch;
+            if (!(sameHeight && sameWidth))
+            {
+                if (child is IContainerInvalidating)
+                    IContainerInvalidating(child).invalidateEstimatedSizesOfChildren();
+                ILayoutManagerContainerClient(child).validateEstimatedSizesOfChildren();
+            }
+        }
+    }

     /**
      *  @private
      */
     override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
     {
+        // navigator is constrained to the size of the skin.
+        // if you change this, also update validateEstimatedSizesOfChild
         navigator.setLayoutBoundsSize(unscaledWidth, unscaledHeight);
         navigator.setLayoutBoundsPosition(0, 0);
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

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

--- frameworks/projects/advancedgrids/src/mx/olap/OLAPTrace.as
+++ frameworks/projects/advancedgrids/src/mx/olap/OLAPTrace.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.
-//
-////////////////////////////////////////////////////////////////////////////////

 package mx.olap
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 4648
Author:   cframpto@adobe.com
Date:     2009-01-23T22:33:27.321165Z

Log Message:
-----------
If text and content are both set on TextGraphic or TextView, content takes precedence. Content can then be set to null to allow text to take precedence.

If there is no text in TextGraphic or TextView should still be able to enter text.  Set contentChanged when original empty textFlow is created to make sure a flowComposer is allocated in updateDisplayList().

QE Notes:
Doc Notes:
Bugs: SDK-17307, SDK-16893
Reviewers: will be Gordan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/TextGraphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/TextView.as</path>

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

--- frameworks/projects/spark/src/spark/components/RichText.as
+++ frameworks/projects/spark/src/spark/components/RichText.as
@@ -183,6 +183,14 @@

     /**
      *  @private
+     *  If content is explicitly set, it will take precedence over text, if it
+     *  is set as well.  Once content is set, it can be set to null and then text
+     *  can be set.
+     */
+    private var contentSet:Boolean = false;
+
+    /**
+     *  @private
      *  This flag is set to true if the 'text' needs to be extracted
      *  from the 'content'.
      */
@@ -227,10 +235,13 @@
         // Setting 'text' temporarily causes 'content' to become null.
         // Later, after the 'text' has been committed into the TextFlow,
         // getting 'content' will return the TextFlow.
-        _content = null;
-        contentChanged = false;
-
-        super.text = value;
+        if (!contentSet)
+        {
+            _content = null;
+            contentChanged = false;
+
+            super.text = value;
+        }
     }

     //----------------------------------
@@ -318,9 +329,13 @@
             // getting 'text' will extract the text from the TextFlow.
             mx_internal::_text = null;
             textChanged = false;
-
+
             _content = value;
-
+
+            // True, if content is non-null.  Once content is set, if then set
+            // to null, text can be set.
+            contentSet = _content;
+
             invalidateTextLines("content");
             invalidateSize();
             invalidateDisplayList();


Transferred from the Adobe Open Source Subversion Repository

Revision: 7203
Author:   gruehle@adobe.com
Date:     2009-05-21T23:22:37.531397Z

Log Message:
-----------
Made more skin parts optional:

Panel: titleField
Scroller: horizontalScrollBar, verticalScrollBar

Bugs: SDK-20213
QA Notes: Test should be added to make sure the components function correctly with the parts missing
Doc Notes: None
Reviewer: Hans

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Panel.as</path>

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

--- frameworks/projects/spark/src/spark/components/Scroller.as
+++ frameworks/projects/spark/src/spark/components/Scroller.as
@@ -166,7 +166,7 @@
     //  horizontalScrollBar
     //----------------------------------

-    [SkinPart(required="true")]
+    [SkinPart(required="false")]
     [Bindable]

     /**
@@ -188,7 +188,7 @@
     //  verticalScrollBar
     //----------------------------------

-    [SkinPart(required="true")]
+    [SkinPart(required="false")]
     [Bindable]

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 11095
Author:   eitan@ascender.com
Date:     2009-10-22T23:34:03.596935Z

Log Message:
-----------
Added changes in spark components to use AccImpl.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/CheckBox.as</path>

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

--- frameworks/projects/spark/src/spark/components/TextArea.as
+++ frameworks/projects/spark/src/spark/components/TextArea.as
@@ -99,6 +99,8 @@
 [DefaultTriggerEvent("change")]

 [IconFile("TextArea.png")]
+
+[AccessibilityClass(implementation="spark.accessibility.TextAreaAccImpl")]

 /**
  *  TextArea is a text-entry control that lets users enter and edit
@@ -290,6 +292,18 @@
 {
     include "../core/Version.as";

+    //--------------------------------------------------------------------------
+    //
+    //  Class mixins
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  Placeholder for mixin by TextInputAccImpl.
+     */
+    mx_internal static var createAccessibilityImplementation:Function;
+
     //--------------------------------------------------------------------------
     //
     //  Constructor
@@ -536,6 +550,16 @@
     //
     //--------------------------------------------------------------------------

+     /**
+     *  @private
+     */
+    override protected function initializeAccessibility():void
+    {
+        if (TextArea.createAccessibilityImplementation != null)
+            TextArea.createAccessibilityImplementation(this);
+    }
+
+
     /**
      *  @private
      */


Transferred from the Adobe Open Source Subversion Repository

Revision: 20007
Author:   cframpto@adobe.com
Date:     2011-01-28T20:19:13.564049Z

Log Message:
-----------
Add [Inspectable] metadata to all spark text components

QE notes:
Doc notes:
Bugs: part of SDK-28942
Reviewer: Corey
Tests run: cyclone, FlashBuilder w/ DesignView
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/TextInput.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/TextArea.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>

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

--- frameworks/projects/spark/src/spark/components/TextArea.as
+++ frameworks/projects/spark/src/spark/components/TextArea.as
@@ -397,6 +397,7 @@
      *  within <p>, <span>, etc.
      */
     [RichTextContent]
+    [Inspectable(environment="none")]

     /**
      *  This property is intended for use in MXML at compile time;
@@ -450,6 +451,8 @@
     //  heightInLines
     //----------------------------------

+    [Inspectable(category="General", minValue="0.0")]
+
     /**
      *  @copy spark.components.RichEditableText#heightInLines
      *
@@ -506,6 +509,8 @@
     //----------------------------------
     //  widthInChars
     //----------------------------------
+
+    [Inspectable(category="General", minValue="0.0")]

     /**
      *  @copy spark.components.RichEditableText#widthInChars


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

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

--- frameworks/projects/charts/src/mx/charts/series/renderData/ColumnSeriesRenderData.as
+++ frameworks/projects/charts/src/mx/charts/series/renderData/ColumnSeriesRenderData.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.charts.series.renderData
 {


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@1260504 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/effects/effectClasses/SetStyleActionInstance.as
+++ frameworks/projects/framework/src/mx/effects/effectClasses/SetStyleActionInstance.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2005-2006 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.
 //
 ////////////////////////////////////////////////////////////////////////////////


Fix ASDoc.

Fix ASDoc.

--- dolly-framework/src/test/actionscript/dolly/CloningOfPropertyLevelCloneableClassTest.as
+++ dolly-framework/src/test/actionscript/dolly/CloningOfPropertyLevelCloneableClassTest.as
@@ -28,7 +28,7 @@

 	/**
 	 * Cloner.findingAllWritableFieldsForType() method will throw CloningError in this case
-	 * because PropertyLevelCloneable class is not cloneable indeed.
+	 * because PropertyLevelCloneableClass class is not cloneable indeed.
 	 */
 	[Test(expects="dolly.core.errors.CloningError")]
 	public function findingAllWritableFieldsForType():void {
@@ -37,7 +37,7 @@

 	/**
 	 * Cloner.clone() method will throw CloningError in this case
-	 * because PropertyLevelCloneable class is not cloneable indeed.
+	 * because PropertyLevelCloneableClass class is not cloneable indeed.
 	 */
 	[Test(expects="dolly.core.errors.CloningError")]
 	public function cloningByCloner():void {
@@ -46,7 +46,7 @@

 	/**
 	 * Method clone() will throw CloningError in this case
-	 * because PropertyLevelCloneable class is not cloneable indeed.
+	 * because PropertyLevelCloneableClass class is not cloneable indeed.
 	 */
 	[Test(expects="dolly.core.errors.CloningError")]
 	public function cloningByCloneFunction():void {


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

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

--- frameworks/projects/spark/src/spark/globalization/supportClasses/DateTimeFormatterEx.as
+++ frameworks/projects/spark/src/spark/globalization/supportClasses/DateTimeFormatterEx.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2011 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.
-//
-////////////////////////////////////////////////////////////////////////////////

 package spark.globalization.supportClasses
 {


Always update code in taxon attribute even if it's not shown

--- collect-client/src/main/flex/org/openforis/collect/presenter/TaxonAttributePresenter.as
+++ collect-client/src/main/flex/org/openforis/collect/presenter/TaxonAttributePresenter.as
@@ -312,10 +312,9 @@
 				//update family scientific name
 				view.familyScientificNameTextInput.text = taxonOccurrence.familyScientificName;
 			}
-			if ( defn.codeVisible ) {
-				//update code
-				view.codeTextInput.text = taxonOccurrence.code;
-			}
+			//always update code
+			view.codeTextInput.text = taxonOccurrence.code;
+
 			//when searching by code or unlisted/unknown item has been selected, replace fields text
 			if ( _lastSearchType == SEARCH_BY_CODE ||
 					( taxonOccurrence != UNKNOWN_ITEM && taxonOccurrence != UNLISTED_ITEM ) ) {


DisplayInjector was ignoring 'optional' tag because it was casting its value to Boolean. Need to explicitly check for === null because keys without values have their values set to ""

--- raw/src/org/yellcorp/lib/display/inject/DisplayInjector.as
+++ raw/src/org/yellcorp/lib/display/inject/DisplayInjector.as
@@ -173,7 +173,7 @@
         catch (die:DisplayInjectorError)
         {
             die.property = property.@name;
-            if (!args.optional)
+            if (args.optional === null)
             {
                 throw die;
             }


Transferred from the Adobe Open Source Subversion Repository

Revision: 18987
Author:   rfrishbe@adobe.com
Date:     2010-12-03T01:08:34.503999Z

Log Message:
-----------
PARB changes for sizeElement/positionElement.  MobileSkin and MobileItemRenderer's methods have been renamed: resizeElement() -> setElementSize(), positionElement() -> setElementPosition().

Also, cleaning up text reflow for TextAreaSkin

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileIconItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderTrackSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ActionBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/SelectableButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as
@@ -448,8 +448,8 @@
         }

         labelDisplay.commitStyles();
-        resizeElement(labelDisplay, labelWidth, labelHeight);
-        positionElement(labelDisplay, Math.max(0, Math.round(labelX)), Math.max(0, Math.round(labelY)));
+        setElementSize(labelDisplay, labelWidth, labelHeight);
+        setElementPosition(labelDisplay, Math.max(0, Math.round(labelX)), Math.max(0, Math.round(labelY)));

         if (textWidth > labelWidth)
         {
@@ -458,8 +458,8 @@

         labelDisplayShadow.alpha = getStyle("textShadowAlpha");
         labelDisplayShadow.commitStyles();
-        resizeElement(labelDisplayShadow, labelWidth, labelHeight);
-        positionElement(labelDisplayShadow, Math.max(0, Math.round(labelX)), Math.max(0, Math.round(labelY + 1)));
+        setElementSize(labelDisplayShadow, labelWidth, labelHeight);
+        setElementPosition(labelDisplayShadow, Math.max(0, Math.round(labelX)), Math.max(0, Math.round(labelY + 1)));

         // if labelDisplay is truncated, then push it down here as well.
         // otherwise, it would have gotten pushed in the labelDisplay_valueCommitHandler()
@@ -468,8 +468,8 @@

         if (iconDisplay)
         {
-            resizeElement(iconDisplay, iconWidth, iconHeight);
-            positionElement(iconDisplay, Math.max(0, Math.round(iconX)), Math.max(0, Math.round(iconY)));
+            setElementSize(iconDisplay, iconWidth, iconHeight);
+            setElementPosition(iconDisplay, Math.max(0, Math.round(iconX)), Math.max(0, Math.round(iconY)));
         }

         // draw chromeColor after parts have been positioned


added missing semicolon

added missing semicolon

--- WeaveUI/src/weave/visualization/tools/SimpleVisTool.as
+++ WeaveUI/src/weave/visualization/tools/SimpleVisTool.as
@@ -109,7 +109,7 @@

 			super.createChildren();

-			toolVBox = new VBox()
+			toolVBox = new VBox();
 			toolVBox.percentHeight = 100;
 			toolVBox.percentWidth = 100;
 			toolVBox.setStyle("verticalGap", 0);


Differentiate actions when queueProcessor result handler is called

--- collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/client/DataClient.as
+++ collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/client/DataClient.as
@@ -22,7 +22,7 @@
 	 * */
 	public class DataClient extends AbstractClient {

-		private var _updateQueueProcessor:RemoteCallQueueProcessor;
+		private var _queueProcessor:RemoteCallQueueProcessor;

 		private var _updateActiveRecordOperation:Operation;
 		private var _saveActiveRecordOperation:Operation;
@@ -39,7 +39,7 @@
 		public function DataClient() {
 			super("dataService");

-			this._updateQueueProcessor = new RemoteCallQueueProcessor(1, updateResultHandler, updateFaultHandler);
+			this._queueProcessor = new RemoteCallQueueProcessor(1, queueResultHandler, queueFaultHandler);
 			this._updateActiveRecordOperation = getOperation("updateActiveRecord");
 			this._saveActiveRecordOperation = getOperation("saveActiveRecord");
 			this._createRecordOperation = getOperation("createRecord");
@@ -59,11 +59,7 @@
 		}

 		public function saveActiveRecord(resultHandler:Function = null, faultHandler:Function = null, token:Object = null):void {
-			this._updateQueueProcessor.appendOperation(token, resultHandler, faultHandler, _saveActiveRecordOperation);
-			/*
-			var token:AsyncToken = this._saveActiveRecordOperation.send();
-			token.addResponder(responder);
-			*/
+			this._queueProcessor.appendOperation(token, resultHandler, faultHandler, _saveActiveRecordOperation);
 		}

 		public function deleteRecord(responder:IResponder, id:int):void {
@@ -89,7 +85,7 @@

 		public function updateActiveRecord(request:UpdateRequest, token:UpdateRequestToken = null,
 										   resultHandler:Function = null, faultHandler:Function = null):void {
-			this._updateQueueProcessor.appendOperation(token, resultHandler, faultHandler, _updateActiveRecordOperation, request);
+			this._queueProcessor.appendOperation(token, resultHandler, faultHandler, _updateActiveRecordOperation, request);
 		}

 		public function promoteActiveRecord(responder:IResponder):void {
@@ -113,7 +109,18 @@
 			token.addResponder(responder);
 		}

-		protected function updateResultHandler(event:ResultEvent, token:Object = null):void {
+		protected function queueResultHandler(event:ResultEvent, token:Object = null):void {
+			var lastCall:RemoteCallWrapper = _queueProcessor.lastCall;
+			if(lastCall != null) {
+				switch(lastCall.operation) {
+					case _updateActiveRecordOperation:
+						updateActiveRecordResultHandler(event, token as UpdateRequestToken);
+						break;
+				}
+			}
+		}
+
+		protected function updateActiveRecordResultHandler(event:ResultEvent, token:UpdateRequestToken):void {
 			var field:FieldProxy;
 			if(token != null && token is UpdateRequestToken) {
 				switch(UpdateRequestToken(token).type) {
@@ -121,8 +128,8 @@
 						//do not break, apply symbol to field
 					case UpdateRequestToken.TYPE_UPDATE_SYMBOL:
 						for each (field in token.updatedFields) {
-							field.symbol = token.symbol;
-						}
+						field.symbol = token.symbol;
+					}
 						break;
 					case UpdateRequestToken.TYPE_UPDATE_REMARKS:
 						for each (field in token.updatedFields) {
@@ -138,7 +145,7 @@
 			EventDispatcherFactory.getEventDispatcher().dispatchEvent(appEvt);
 		}

-		protected function updateFaultHandler(event:FaultEvent, token:Object = null):void {
+		protected function queueFaultHandler(event:FaultEvent, token:Object = null):void {
 			if(token != null && token is UpdateRequestToken) {
 				var updateRequestToken:UpdateRequestToken = UpdateRequestToken(token);
 				var inputField:InputField = token != null ? token.inputField: null;
@@ -155,11 +162,11 @@
 		}

 		protected function retryUpdateHandler():void {
-			_updateQueueProcessor.sendHeadRemoteCall();
+			_queueProcessor.sendHeadRemoteCall();
 		}

 		protected function doNotRetryUpdateHandler():void {
-			var call:RemoteCallWrapper = _updateQueueProcessor.removeHeadOperation();
+			var call:RemoteCallWrapper = _queueProcessor.removeHeadOperation();
 			if(call != null && call.token != null && call.token is UpdateRequestToken) {
 				var token:UpdateRequestToken = UpdateRequestToken(call.token);
 				var inputField:InputField = token.inputField;


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@1252831 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/charts/src/mx/charts/BarChart.as
+++ frameworks/projects/charts/src/mx/charts/BarChart.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 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.
 //
 ////////////////////////////////////////////////////////////////////////////////


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

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

--- frameworks/projects/framework/src/mx/effects/Fade.as
+++ frameworks/projects/framework/src/mx/effects/Fade.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2003-2007 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.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.effects
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 14963
Author:   jszeto@adobe.com
Date:     2010-03-23T21:34:04.235844Z

Log Message:
-----------
Merging revisions 14946 and 14947 from 4.x to trunk

Mirroring code hinting fixes

http://bugs.adobe.com/jira/browse/SDK-25565 - Components should define [Style] metadata for  layoutDirection and direction styles

There is both a style and property called layoutDirection in UIComponent. For UIComponent, both Hans and I agree that we should promote the use of the style. I added an exclude for the layoutDirection property in UIComponent. This allows code hinting for the layoutDirection style in the CSS style declaration. It also removes the layoutDirection property from the ASDoc. Code hinting still works for the layoutDirection attribute on a UIComponent subclass MXML tag. This attribute gets set to the property, not the style.

ProgressBar has both a direction property and style. However, in this situation, they control different behaviors. It is not possible to code hint for the direction style in the CSS style declaration without removing the direction property from ASDoc. We are just going to have to live with this limitation.

http://bugs.adobe.com/jira/browse/SDK-25823 - The layoutDirection style/property doesnt code hint static enums

Added Inspectable metadata to BitmapAsset, SpriteAsset, SpriteVisualElement and GraphicElement.

QE notes: test code hinting for layoutDirection
Doc notes: none
Bugs: SDK-25565, SDK-25823
Reviewer: Carol, Hans
Tests run: checkintests, Mirroring
Is noteworthy for integration: no

ColorPicker and PopUpButton mirroring bug fix

http://bugs.adobe.com/jira/browse/SDK-25916 - color/label field in swatch panel isn't updated when layoutDirection is
changed between rtl and ltr

Since the ColorPicker's SwatchPanel is parented by the SystemManager it wasn't inheriting the layoutDirection and it wasn't invalidating the layoutDirection. The fix is to pass the layoutDirection to the SwatchPanel and always call invalidateLayoutDirection in PopUpManager.addPopUp.

http://bugs.adobe.com/jira/browse/SDK-25828 - initial popup starts with wrong position, not aligned with PopupButton when there is padding set on container

The popup is not guaranteed to know its size until it has been added as a popup. Moved the position logic to after the popup has been added.

QE notes: test mirrored ColorPicker and PopUpButton
Doc notes: none
Bugs: SDK-25916
Reviewer: Carol
Tests run: checkintests, ColorPicker, PopUpButton
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/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.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/framework/src/mx/core/SpriteAsset.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/frameworks/projects/framework/src/mx/controls/PopUpButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/BitmapAsset.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>

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

--- frameworks/projects/framework/src/mx/core/SpriteAsset.as
+++ frameworks/projects/framework/src/mx/core/SpriteAsset.as
@@ -320,6 +320,8 @@
     //----------------------------------

     private var _layoutDirection:String = LayoutDirection.LTR;
+
+    [Inspectable(category="General", enumeration="ltr,rtl")]

     /**
      *  @inheritDoc


Transferred from the Adobe Open Source Subversion Repository

Revision: 11339
Author:   chaase@adobe.com
Date:     2009-10-30T22:36:04.023126Z

Log Message:
-----------
Fixed various effects bugs.
23236: Easing was being ignored for properties being auto-animated (basically, the post-layout transform center). This caused a mis-match between a resizing animation and a move animation, causing the object to swim back and forth as the easing on these animations were out of sync. This also fixes the high-priority 23856 bug, which was closed as a dup of 23236.
23421: There is a player bug related to a null concatenatedMatrix property on DisplayObjects which causes a mis-calculation of mouse hit testing when the matrix is changed too late in the frame cycle. Since we do not validate our properties until enterFrame or render time, this sometimes causes Flash to detect mouseOut on objects that the mouse is still over when the object goes in and out of 3D in that frame. This fix works around that player bug by forcing matrix validation early when we detect a 2D/3D switch.
23484: The transform code in AdvancedLayoutFeatures needed to account for stretchX/stretchY when using computedMatrix and computedMatrix3D. These matrices assume pre-stretched values. Since our transforms expect post-stretched values, they need to divide out the stretchX/Y values before using these matrices.

QE notes: None
Doc notes: None
Bugs: sdk-23236, sdk-23421, sdk-23484
Reviewer: Evtim
Tests run: ant checkintests, Mustella spark/effects
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransformInstance.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/core/AdvancedLayoutFeatures.as</path>

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

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -1992,12 +1992,18 @@
     {
         if (z == value)
             return;
+
+        // validateMatrix when switching between 2D/3D, works around player bug
+        // see sdk-23421
+        var was3D:Boolean = is3D;
         if (_layoutFeatures == null)
             initAdvancedLayoutFeatures();

         _layoutFeatures.layoutZ = value;
         invalidateTransform();
         invalidateProperties();
+        if (was3D != is3D)
+            validateMatrix();
         dispatchEvent(new Event("zChanged"));
     }

@@ -2231,12 +2237,17 @@
         if (rotationX == value)
             return;

+        // validateMatrix when switching between 2D/3D, works around player bug
+        // see sdk-23421
+        var was3D:Boolean = is3D;
         if (_layoutFeatures == null)
             initAdvancedLayoutFeatures();
         _layoutFeatures.layoutRotationX = value;
         invalidateTransform();
         invalidateProperties();
         invalidateParentSizeAndDisplayList();
+        if (was3D != is3D)
+            validateMatrix();
     }

     /**
@@ -2265,12 +2276,17 @@
         if (rotationY == value)
             return;

+        // validateMatrix when switching between 2D/3D, works around player bug
+        // see sdk-23421
+        var was3D:Boolean = is3D;
         if (_layoutFeatures == null)
             initAdvancedLayoutFeatures();
         _layoutFeatures.layoutRotationY = value;
         invalidateTransform();
         invalidateProperties();
         invalidateParentSizeAndDisplayList();
+        if (was3D != is3D)
+            validateMatrix();
     }

     //----------------------------------
@@ -2671,6 +2687,10 @@
     {
         if (scaleZ == value)
             return;
+
+        // validateMatrix when switching between 2D/3D, works around player bug
+        // see sdk-23421
+        var was3D:Boolean = is3D;
         if (_layoutFeatures == null)
             initAdvancedLayoutFeatures();

@@ -2679,6 +2699,8 @@
         invalidateTransform();
         invalidateProperties();
         invalidateParentSizeAndDisplayList();
+        if (was3D != is3D)
+            validateMatrix();
         dispatchEvent(new Event("scaleZChanged"));
     }

@@ -11943,6 +11965,10 @@
         var ct:ColorTransform = value.colorTransform;
         var pp:PerspectiveProjection = value.perspectiveProjection;

+        // validateMatrix when switching between 2D/3D, works around player bug
+        // see sdk-23421
+        var was3D:Boolean = is3D;
+
         var mxTransform:mx.geom.Transform = value as mx.geom.Transform;
         if (mxTransform)
         {
@@ -11964,6 +11990,8 @@
         super.transform.perspectiveProjection = pp;
         if (maintainProjectionCenter)
             invalidateDisplayList();
+        if (was3D != is3D)
+            validateMatrix();
     }

     /**
@@ -11984,6 +12012,10 @@
      */
     public function set postLayoutTransformOffsets(value:TransformOffsets):void
     {
+        // validateMatrix when switching between 2D/3D, works around player bug
+        // see sdk-23421
+        var was3D:Boolean = is3D;
+
         if (_layoutFeatures == null)
             initAdvancedLayoutFeatures();

@@ -11992,6 +12024,8 @@
         _layoutFeatures.postLayoutTransformOffsets = value;
         if (_layoutFeatures.postLayoutTransformOffsets != null)
             _layoutFeatures.postLayoutTransformOffsets.addEventListener(Event.CHANGE,transformOffsetsChangedHandler);
+        if (was3D != is3D)
+            validateMatrix();
     }

     /**
@@ -12036,6 +12070,10 @@
      */
     public function setLayoutMatrix(value:Matrix, invalidateLayout:Boolean):void
     {
+        // validateMatrix when switching between 2D/3D, works around player bug
+        // see sdk-23421
+        var was3D:Boolean = is3D;
+
         _hasComplexLayoutMatrix = true;
         if (_layoutFeatures == null)
         {
@@ -12054,6 +12092,9 @@

         if (invalidateLayout)
             invalidateParentSizeAndDisplayList();
+
+        if (was3D != is3D)
+            validateMatrix();
     }

     /**
@@ -12067,6 +12108,10 @@
      */
     public function setLayoutMatrix3D(value:Matrix3D, invalidateLayout:Boolean):void
     {
+        // validateMatrix when switching between 2D/3D, works around player bug
+        // see sdk-23421
+        var was3D:Boolean = is3D;
+
         if (_layoutFeatures == null)
             initAdvancedLayoutFeatures();
         // layout features will internally make a copy of this matrix rather than
@@ -12078,6 +12123,9 @@

         if (invalidateLayout)
             invalidateParentSizeAndDisplayList();
+
+        if (was3D != is3D)
+            validateMatrix();
     }

     private static var xformPt:Point;


Transferred from the Adobe Open Source Subversion Repository

Revision: 4634
Author:   gosmith@adobe.com
Date:     2009-01-23T01:38:56.754915Z

Log Message:
-----------
First part of glue code for allowing Halo components to use the new Text Layout Framework, in order to get functionality such as bidirectional text.

Background:

TLF is making this possible by implementing a TLFTextField class. It is a Sprite that uses TLF to implement the same properties and methods as the legacy TextField class in the Player. Thanks to the createInFontContext() bottleneck method in UIComponent, it can be used by a properly-written Halo component (such as those in Flex 3) without any modifications to the component.

Note: Text should render similarly -- but is unlikely to render identically -- when a component uses TLFTextField vs. TextField. The width and height may be different, affecting layout; text could wrap differently; etc. This is a fact-of-life based on the fact that TLF/FTE and TextField are completely different text engines.

Whether a Halo component uses TLF or not to render text will be determined in Flex 4 by a new style, textFieldClass. (Gumbo components always use TLF.)

TLFTextField is currently only partially implemented. It does not yet support scrolling, selection, editing, multiple formats, or htmlText. Therefore it can only be used for simple display text, such as a Button label.

Details:

The TextStyles.as bucket 'o text styles now includes a non-inheriting textFieldClass style. It can be set to either mx.core.UITextField or mx.core.UITLFTextField. These are the Flex framework's wrapper classes around the lower-level classes flash.text.TextField (in the Player) and its TLF-based workalike, flashx.textLayout.controls.TLFTextField.

The global selector in defaults.css currently sets it to mx.core.UITextField using a ClassReference directive. For the time being, all Halo components will continue to use the "real" TextField.

The new UITLFTextField is a copy of UITextField, except that it extends TLFTextField instead of TextField. This class has been added to FrameworkClasses.as because no classes in framework.swc have a dependency on it. It will get soft-linked into applcations via the textFieldClass style.

The TLFTextField class currently lives in a fourth TLF SWC, textLayout_textField.swc. This SWC has been added to various build scripts. The external-library-path for building framework.swc now includes all four TLF SWCs, because UITLFTextField can't be compiled and linked without them. However, since they are external they aren't linked into framework.swc.

Properly-written Halo UIComponents access their text fields only through the IUITextField interface, and they create text fields like this:

textField = IUITextField(createInFontContext(UITextField));

(The reason for using createInFontContext() is to support embedded fonts that are embedded in a different SWF.)

The createInFontContext() method of UIComponent has been modified to use the textFieldClass style to determine whether to create a UITextField or a UITLFTextField.

With these changes, you can now write code like

<mx:Button label="OK"/>
<mx:Button label="OK" textFieldClass="mx.core.UITLFTextField"/>

to get two Buttons, the first of which uses UITextField (because this is the value of textFieldClass in the global selector) and the second of which uses UITLFTextField. They look very similar, which is good!

Currently, both Buttons are being measured by using an offscreen TextField. A subsequent checkin will make components rendering using UITLFTextField measure themselves using an offscreen TLFTextField so that measurement and rendering are consistent.

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Deepa

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/TextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/asdoc/build.xml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITLFTextField.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/UIComponent.as</path>

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

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -9523,6 +9523,9 @@
     protected function createInFontContext(classObj:Class):Object
     {
         hasFontContextBeenSaved = true;
+
+        classObj = getStyle("textFieldClass");
+
         var fontName:String = StringUtil.trimArrayElements(getStyle("fontFamily"), ",");
         var fontWeight:String = getStyle("fontWeight");
         var fontStyle:String = getStyle("fontStyle");


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@1262206 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/resources/Locale.as
+++ frameworks/projects/framework/src/mx/resources/Locale.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2005-2007 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.
 //
 ////////////////////////////////////////////////////////////////////////////////


FLEX-22865 fix setting displayed month

FLEX-22865 fix setting displayed month

--- frameworks/projects/mx/src/mx/controls/CalendarLayout.as
+++ frameworks/projects/mx/src/mx/controls/CalendarLayout.as
@@ -601,7 +601,7 @@
         if (value < 0 || value > 11)
             return;

-        if (value == _displayedMonth)
+        if (value == _proposedDisplayedMonth)
             return;

         _proposedDisplayedMonth = value;


Transferred from the Adobe Open Source Subversion Repository

Revision: 6391
Author:   smgilson@adobe.com
Date:     2009-04-29T20:04:20.789717Z

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

QE Notes: None
Doc Notes: None
Bugs: -
Checkintests: passed

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/events/TextOperationEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/events/VideoEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/events/RendererExistenceEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/events/ElementExistenceEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableDataContainer.as</path>

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

--- frameworks/projects/spark/src/spark/events/VideoEvent.as
+++ frameworks/projects/spark/src/spark/events/VideoEvent.as
@@ -18,7 +18,7 @@
  *  The VideoEvent class represents the event object passed to the event listener for
  *  events dispatched by the video control.
  *
- *  @see spark.controls.VideoPlayer
+ *  @see spark.components.VideoPlayer
  *  @see spark.primitives.VideoElement
  *
  *  @langversion 3.0
@@ -215,8 +215,8 @@
      *
      *  @param playeheadTime The location of the playhead when the event occurs.
      *
-     *  @param metadataInfo The metadata info object with properties
-     *  describing the FLB file.
+     *  @param metadataInfo The metadata information object with properties
+     *  describing the FLV file.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -245,7 +245,7 @@
     //----------------------------------

     /**
-     *  The metadata info object with properties describing the FLB file.
+     *  The metadata information object with properties describing the FLV file.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

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

--- frameworks/projects/mobilecomponents/src/spark/components/ContentBackgroundAppearance.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ContentBackgroundAppearance.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2011 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.
-//
-////////////////////////////////////////////////////////////////////////////////

 package spark.components
 {


We use the wee arrows for scrolling, so turn off the scrollbar.

git-svn-id: b675b909355d5cf946977f44a8ec5a6ceb3782e4@146 ed5b42cb-e716-0410-a449-f6a68f950b19

--- src/as/com/threerings/flex/CommandMenu.as
+++ src/as/com/threerings/flex/CommandMenu.as
@@ -40,6 +40,7 @@
     public function CommandMenu ()
     {
         super();
+        verticalScrollPolicy = ScrollPolicy.OFF;

         addEventListener(MenuEvent.ITEM_CLICK, itemClicked);
 //        addEventListener(MenuEvent.MENU_SHOW, handleMenuShown);


Transferred from the Adobe Open Source Subversion Repository

Revision: 20844
Author:   jimurphy@adobe.com
Date:     2011-03-14T15:10:07.899037Z

Log Message:
-----------
block hero_private revs 20698,20699,20702 from being merged into trunk
revert 20839,20841,20842,20843

QE notes: no
Doc notes: no
Bugs: no
Reviewer:no
Tests run: no
Is noteworthy for integration:no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/formatters/NumberFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSCondition.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/ISortField.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/formatters/CurrencyFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/BitmapFill.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/formatters/DateTimeFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/charts/src/mx/charts/chartClasses/CartesianChart.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/GradientStroke.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/ArrayList.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/GradientBase.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/charts/src/mx/charts/chartClasses/PolarChart.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/ColorDodgeShader.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/charts/src/mx/charts/chartClasses/PolarDataCanvas.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/OnDemandEventDispatcher.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/charts/src/mx/charts/series/PlotSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/TabBar.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/SolidColorStroke.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/geom/Transform.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/advancedgrids/src/mx/collections/HierarchicalCollectionViewCursor.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/charts/src/mx/charts/series/CandlestickSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/StringUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/globalization/StringTools.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/geom/CompoundTransform.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/AdvancedStyleClient.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/binding/utils/ChangeWatcher.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/LinearGradientStroke.as</path>

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

--- frameworks/projects/advancedgrids/src/mx/collections/HierarchicalCollectionViewCursor.as
+++ frameworks/projects/advancedgrids/src/mx/collections/HierarchicalCollectionViewCursor.as
@@ -304,9 +304,6 @@
     /**
      *  @inheritDoc
      *
-     *
Note that for this class, the view does not need to be sorted in order to
-     *  call this method.

-     *
      *  @langversion 3.0
      *  @playerversion Flash 9
      *  @playerversion AIR 1.1
@@ -343,9 +340,6 @@
     /**
      *  @inheritDoc
      *
-     *
Note that for this class, the view does not need to be sorted in order to
-     *  call this method.

-     *
      *  @langversion 3.0
      *  @playerversion Flash 9
      *  @playerversion AIR 1.1
@@ -358,9 +352,6 @@

     /**
      *  @inheritDoc
-     *
-     *
Note that for this class, the view does not need to be sorted in order to
-     *  call this method.

      *
      *  @langversion 3.0
      *  @playerversion Flash 9
@@ -430,8 +421,8 @@
                     try
                     {
                         currentNode = childCursor.current;
-                        // update parent map
-                        updateParentMap(currentNode);
+						// update parent map
+						updateParentMap(currentNode);
                     }
                     catch (e:ItemPendingError)
                     {
@@ -589,8 +580,8 @@
                 }
             }
         }
-
-        updateParentMap(currentNode);
+
+		updateParentMap(currentNode);

         currentIndex++;
         return true;
@@ -748,7 +739,7 @@
             }
         }

-        updateParentMap(currentNode);
+		updateParentMap(currentNode);

         currentIndex--;
         return true;
@@ -908,20 +899,20 @@
         }
         return true;
     }
-
-    /**
-     * @private
-     * Update the parent map.
-     */
-    private function updateParentMap(currentNode:Object):void
-    {
-        if (currentNode != null)
-        {
-            var uid:String = UIDUtil.getUID(currentNode);
-            if (!collection.parentMap.hasOwnProperty(uid))
-                collection.parentMap[uid] = parentNodes[parentNodes.length - 1];
-        }
-    }
+
+	/**
+	 * @private
+	 * Update the parent map.
+	 */
+	private function updateParentMap(currentNode:Object):void
+	{
+		if (currentNode != null)
+		{
+			var uid:String = UIDUtil.getUID(currentNode);
+			if (!collection.parentMap.hasOwnProperty(uid))
+				collection.parentMap[uid] = parentNodes[parentNodes.length - 1];
+		}
+	}

     /**
      *  @private
@@ -1307,14 +1298,14 @@
             // dispatch CURSOR_UPDATE event
             collection.dispatchEvent(new FlexEvent(FlexEvent.CURSOR_UPDATE));
         }
-        else if (event.kind == CollectionEventKind.REFRESH)
-        {
-            // find the correct index of the item
-            if (!(beforeFirst || afterLast))
-            {
-                findFirst(current);
-            }
-        }
+		else if (event.kind == CollectionEventKind.REFRESH)
+		{
+			// find the correct index of the item
+			if (!(beforeFirst || afterLast))
+			{
+				findFirst(current);
+			}
+		}
     }
 }


StreamBuffer : push overlapping tags only if audio and video tags are found as expected

--- src/org/mangui/hls/stream/StreamBuffer.as
+++ src/org/mangui/hls/stream/StreamBuffer.as
@@ -772,7 +772,12 @@
                 }
             }

-            if((videoIdx >= 0 || audioIdx >=0) && filteredDuration > 500) {
+            // only push tags, if we found more than 500ms of tags AND
+            // (audio not expected OR audio tags found) AND
+            // (video not expected OR video tags found)
+            if((!audioExpected || audioIdx>=0) &&
+               (!videoExpected || videoIdx>=0) &&
+                filteredDuration > 500) {
                 // modify PTS for DISCONTINUITY/METADATA/AAC_HEADER/AVC_HEADER tag
                 // and push as filtered tag
                 if(disIdx >=0) {
@@ -790,6 +795,10 @@
                 if(avcIdx >=0) {
                     tags[avcIdx].pts = tags[avcIdx].dts = tags[videoIdx].dts;
                     filteredTags.push(tags[avcIdx]);
+                }
+
+                CONFIG::LOGGING {
+                    Log.debug("filterOverlappingTags : header appended:" + filteredTags.length);
                 }

                 for (i= 0; i < tags.length; i++) {
@@ -811,6 +820,9 @@
                         default:
                             break;
                     }
+                }
+                CONFIG::LOGGING {
+                    Log.debug("filterOverlappingTags : tags appended:" + filteredTags.length);
                 }
             } else {
                 CONFIG::LOGGING {


[VectorCommon] fixed feature alignment bug

git-svn-id: adbdea8fc1759bd16b0eaf24a244a7e5f870a654@166 fe3f0490-d73e-11de-a956-c71e7d3a9d2f

--- VectorCommon/src/org/jbei/components/common/Alignment.as
+++ VectorCommon/src/org/jbei/components/common/Alignment.as
@@ -40,7 +40,7 @@
         // Private Methods
         private function buildAnnotation():void
         {
-            annotations.sort(sortAnnotationsByLength);
+            annotations.sort(sortAnnotationsByStartPosition);

             var numberOfAnnotations:uint = annotations.length;
             for(var i:uint = 0; i < numberOfAnnotations; i++) {


Creating a new AssetsLibrary in ParserOptions if nothing is set

--- src/aerys/minko/type/loader/parser/ParserOptions.as
+++ src/aerys/minko/type/loader/parser/ParserOptions.as
@@ -115,10 +115,10 @@

 		public function get assets() : AssetsLibrary
 		{
-			return _assets;
+			return _assets || (_assets = new AssetsLibrary());
 		}

-		public function set assets(value  :AssetsLibrary):void
+		public function set assets(value : AssetsLibrary):void
 		{
 			_assets = value;
 		}


Transferred from the Adobe Open Source Subversion Repository

Revision: 18359
Author:   hmuller@adobe.com
Date:     2010-10-28T23:57:55.822002Z

Log Message:
-----------
Changed GridLayout/layoutItemRenderers(): call IGridItemRenderer/prepare() earlier, after the render has been initialized but before it has been validated.

Made similar change to GridColumnHeaderGroupLayout/updateDisplayList().

QE notes:
Doc notes:
Bugs: SDK-28353
Reviewer: Kevin
Tests run: checkin, mustella cyclone
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderGroupLayout.as</path>

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

--- frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderGroupLayout.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderGroupLayout.as
@@ -227,9 +227,6 @@
         const rendererHeight:Number = unscaledHeight - paddingTop - paddingBottom;
         const maxRendererX:Number = columnHeaderGroup.horizontalScrollPosition + unscaledWidth;

-        const allocatedItemRenderers:Vector.<IGridItemRenderer> = new Vector.<IGridItemRenderer>();
-        var createdItemRenderers:Vector.<IGridItemRenderer> = null;
-
         var columnIndex:int = -1;
         var visibleLeft:Number = 0;
         var visibleRight:Number = 0;
@@ -262,20 +259,6 @@
                 if (!factory)
                     factory = columnHeaderGroup.headerRenderer;
                 renderer = allocateVisualElement(factory) as IGridItemRenderer;
-
-                // Track which item renderers were created (uncommon) or recycled
-                // for the sake of the IGridItemRenderer prepare() method.
-
-                if (createdVisualElement)
-                {
-                    if (!createdItemRenderers)
-                        createdItemRenderers = new Vector.<IGridItemRenderer>();
-                    createdItemRenderers.push(renderer);
-                }
-                else
-                {
-                    allocatedItemRenderers.push(renderer);
-                }
             }

             // initialize the renderer
@@ -304,6 +287,8 @@

             if ((rendererX + rendererWidth) > maxRendererX)
                 break;
+
+            renderer.prepare(!createdVisualElement);

             // allocate and layout a column separator

@@ -328,16 +313,6 @@
         visibleRenderersBounds.top = rendererY;
         visibleRenderersBounds.height = rendererHeight;

-        // Call prepare on renderers.
-        if (createdItemRenderers)
-        {
-            for each (var createdRenderer:IGridItemRenderer in createdItemRenderers)
-                createdRenderer.prepare(false);
-        }
-
-        for each (var allocatedRenderer:IGridItemRenderer in allocatedItemRenderers)
-            allocatedRenderer.prepare(true);
-
         // We may have created new renderers or changed their visibility.  Force
         // validation to avoid a display list flash.


flashlsOSMF: HLS playlists have m3u or m3u8 extension related to https://github.com/mangui/flashls/issues/131

--- src/org/mangui/osmf/plugins/loader/HLSLoaderBase.as
+++ src/org/mangui/osmf/plugins/loader/HLSLoaderBase.as
@@ -39,13 +39,14 @@
         public static function canHandle(resource : MediaResourceBase) : Boolean {
             if (resource !== null && resource is URLResource) {
                 var urlResource : URLResource = URLResource(resource);
-                if (urlResource.url.search(/(https?|file)\:\/\/.*?\m3u8(\?.*)?/i) !== -1) {
+                //  check for m3u/m3u8
+                if (urlResource.url.search(/(https?|file)\:\/\/.*?\m3u(\?.*)?/i) !== -1) {
                     return true;
                 }

                 var contentType : Object = urlResource.getMetadataValue("content-type");
                 if (contentType && contentType is String) {
-                    // If the filename doesn't include a .m3u8 extension, but
+                    // If the filename doesn't include a .m3u or m3u8 extension, but
                     // explicit content-type metadata is found on the
                     // URLResource, we can handle it.  Must be either of:
                     // - "application/x-mpegURL"


Removed OSMF from DashNetStream and updated it to load XML manifest and play dash streams

--- src/main/actionscript/com/castlabs/dash/DashNetStream.as
+++ src/main/actionscript/com/castlabs/dash/DashNetStream.as
@@ -8,9 +8,12 @@

 package com.castlabs.dash {
 import com.castlabs.dash.events.FragmentEvent;
+import com.castlabs.dash.events.ManifestEvent;
 import com.castlabs.dash.events.SegmentEvent;
 import com.castlabs.dash.events.StreamEvent;
+import com.castlabs.dash.handlers.ManifestHandler;
 import com.castlabs.dash.loaders.FragmentLoader;
+import com.castlabs.dash.loaders.ManifestLoader;

 import flash.events.NetStatusEvent;
 import flash.events.TimerEvent;
@@ -20,7 +23,7 @@
 import flash.utils.ByteArray;
 import flash.utils.Timer;

-import org.osmf.net.NetStreamCodes;
+import com.castlabs.dash.utils.NetStreamCodes;

 public class DashNetStream extends NetStream {
     private const MIN_BUFFER_TIME:Number = 5;
@@ -79,6 +82,13 @@
     }

     override public function play(...rest):void {
+		if (typeof(rest[0]) == 'string' && rest[0] != '')
+		{
+			loadManifest(rest[0]);
+			updateState(PLAY);
+			return;
+		}
+
         super.play(null);

         appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);
@@ -208,10 +218,49 @@
             return _duration;
         }
     }
+
+	public function loadManifest(url:String):void
+	{
+		var thisStream:DashNetStream = this;
+        var loader:ManifestLoader = _context.buildManifestLoader(url);
+
+        loader.addEventListener(ManifestEvent.LOADED, onLoad);
+        loader.addEventListener(ManifestEvent.ERROR, onError);
+
+        function onLoad(event:ManifestEvent):void {
+            _context.console.info("Creating manifest...");
+
+            var manifest:ManifestHandler = _context.createManifestHandler(event.url, event.xml);
+            _context.console.info("Created manifest, " + manifest.toString());
+
+            thisStream.init();
+        }
+
+        function onError(event:ManifestEvent):void {
+            /*loadTrait.dispatchEvent(new MediaErrorEvent(MediaErrorEvent.MEDIA_ERROR, false, false,
+                    new MediaError(MediaErrorCodes.MEDIA_LOAD_FAILED)));*/
+        }
+
+        loader.load();
+    }

     public function init():void {
         _live = _context.manifestHandler.live;
         _duration = _context.manifestHandler.duration;
+
+		if (client && client.hasOwnProperty('onMetaData'))
+		{
+			client.onMetaData({
+				canSeekToEnd : !_live,
+				videocodecid : 0,
+				framerate : 24,
+				videodatarate : 0,
+				height : 0,
+				width : 0,
+				duration : _duration,
+				dash: true
+			});
+		}

         _loader = _context.fragmentLoader;
         _loader.addEventListener(StreamEvent.READY, onReady);
@@ -326,8 +375,15 @@
     }

     private function onReady(event:StreamEvent):void {
-        _state = STOPPED;
-        dispatchEvent(event);
+		if (_state == PLAYING)
+		{
+			play();
+		} else
+		{
+			_state = STOPPED;
+		}
+
+		dispatchEvent(event);
     }

     private function onLoaded(event:FragmentEvent):void {


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

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

--- frameworks/projects/airspark/src/spark/core/Version.as
+++ frameworks/projects/airspark/src/spark/core/Version.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2006-2007 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.
+//
+////////////////////////////////////////////////////////////////////////////////

 import mx.core.mx_internal;


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

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

--- frameworks/projects/framework/src/mx/utils/HSBColor.as
+++ frameworks/projects/framework/src/mx/utils/HSBColor.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2008 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.
-//
-////////////////////////////////////////////////////////////////////////////////

 package mx.utils
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 4257
Author:   shodgson@adobe.com
Date:     2008-12-09T00:29:54.102535Z

Log Message:
-----------
Bugs: BLZ-287 - Potential null pointer in MessageAgent set destination method.
      LCDS-522 - Add more configurable reconnect handling for connecting up again over the same channel when there is a connection failure/outage.

QA: Yes
Doc: No
Checkintests Passes: Yes

Details:
* MessageAgent (conceptually an abstract class but that's not supported by ActionScript) now defines a default value for the agentType member used in logging output - fixes BLZ-287.
* ChannelSet now resets to the beginning on its channels upon manual disconnects or otherwise. This fixes the scenario of starting off on streaming or RTMP, loosing connectivity temporarily and then getting stuck on a fallback polling channel. Chances of reconnecting on the preferred channel are better now, and manual disconnects/reconnects if you end up on a fallback channel that you don't want to stick with are now possible.
* Also, updates to Channel to support LCDS-522, and longer-duration reliable messaging reconnects.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/Channel.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/rpc/src/mx/messaging/ChannelSet.as</path>

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

--- frameworks/projects/rpc/src/mx/messaging/ChannelSet.as
+++ frameworks/projects/rpc/src/mx/messaging/ChannelSet.as
@@ -799,6 +799,7 @@
                 if (_messageAgents.length == 0)
                 {
                     _shouldBeConnected = false;
+                    _currentChannelIndex = -1;
                     if (connected)
                         disconnectChannel();
                 }
@@ -831,6 +832,7 @@
     {
         _connecting = false;
         _connected = true; // Set internally to allow us to send pending messages before dispatching the connect event.
+        _currentChannelIndex = -1; // Reset index so that future disconnects are followed by hunting through all available options in order.

         // Send any pending messages.
         while (_pendingSends.length > 0)