Transferred from the Adobe Open Source Subversion Repository

Revision: 10653
Author:   egeorgie@adobe.com
Date:     2009-09-28T19:34:37.823932Z

Log Message:
-----------
Add APIs for detecting whether an IVisualElement is in 3D, or an ILayoutElement has 3D matrix. Small cleanup for "depth" property and ASDoc comments, "depth" is now consistently non-bindable.

QE notes: None
Doc notes: None
Bugs: None
Reviewer: Ryan
Tests run: checkintests, mustella (Group, layout3D)

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="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ILayoutElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>

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

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -1934,7 +1934,7 @@
      */
     override public function get x():Number
     {
-        return (_layoutFeatures == null)? super.x:_layoutFeatures.layoutX;
+        return (_layoutFeatures == null) ? super.x : _layoutFeatures.layoutX;
     }

     /**
@@ -1973,7 +1973,7 @@
      */
     override public function get z():Number
     {
-        return (_layoutFeatures == null)? super.z:_layoutFeatures.layoutZ;
+        return (_layoutFeatures == null) ? super.z : _layoutFeatures.layoutZ;
     }

     /**
@@ -2019,7 +2019,7 @@
      */
     public function get transformX():Number
     {
-        return (_layoutFeatures == null)? 0 : _layoutFeatures.transformX;
+        return (_layoutFeatures == null) ? 0 : _layoutFeatures.transformX;
     }

     /**
@@ -2064,7 +2064,7 @@
      */
     public function get transformY():Number
     {
-        return (_layoutFeatures == null)? 0 : _layoutFeatures.transformY;
+        return (_layoutFeatures == null) ? 0 : _layoutFeatures.transformY;
     }

     /**
@@ -2109,7 +2109,7 @@
      */
     public function get transformZ():Number
     {
-        return (_layoutFeatures == null)? 0:_layoutFeatures.transformZ;
+        return (_layoutFeatures == null) ? 0 : _layoutFeatures.transformZ;
     }
     /**
      *  @private
@@ -2139,7 +2139,7 @@
     {
         if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_0)
             return super.rotation;
-        return (_layoutFeatures == null)? super.rotation:_layoutFeatures.layoutRotationZ;
+        return (_layoutFeatures == null) ? super.rotation : _layoutFeatures.layoutRotationZ;
     }

     /**
@@ -2211,7 +2211,7 @@
      */
     override public function get rotationX():Number
     {
-        return (_layoutFeatures == null)? super.rotationX:_layoutFeatures.layoutRotationX;
+        return (_layoutFeatures == null) ? super.rotationX : _layoutFeatures.layoutRotationX;
     }

     /**
@@ -2245,7 +2245,7 @@
      */
     override public function get rotationY():Number
     {
-        return (_layoutFeatures == null)? super.rotationY:_layoutFeatures.layoutRotationY;
+        return (_layoutFeatures == null) ? super.rotationY : _layoutFeatures.layoutRotationY;
     }

     /**
@@ -2293,7 +2293,7 @@
      */
     override public function get y():Number
     {
-        return (_layoutFeatures == null)? super.y:_layoutFeatures.layoutY;
+        return (_layoutFeatures == null) ? super.y : _layoutFeatures.layoutY;
     }

     /**
@@ -2495,7 +2495,7 @@
         if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_0)
             return _scaleX;
         else
-            return ((_layoutFeatures == null)? super.scaleX:_layoutFeatures.layoutScaleX);
+            return (_layoutFeatures == null) ? super.scaleX : _layoutFeatures.layoutScaleX;
     }

     /**
@@ -2518,7 +2518,7 @@
         }
         else
         {
-            var prevValue:Number = (_layoutFeatures == null)? scaleX:_layoutFeatures.layoutScaleX;
+            var prevValue:Number = (_layoutFeatures == null) ? scaleX : _layoutFeatures.layoutScaleX;
             if (prevValue == value)
                 return;

@@ -2577,7 +2577,7 @@
             return _scaleY;
         }
         else
-            return ((_layoutFeatures == null)? super.scaleY:_layoutFeatures.layoutScaleY);
+            return (_layoutFeatures == null) ? super.scaleY : _layoutFeatures.layoutScaleY;
     }

     /**
@@ -2601,7 +2601,7 @@
        }
        else
        {
-            var prevValue:Number = (_layoutFeatures == null)? scaleY:_layoutFeatures.layoutScaleY;
+            var prevValue:Number = (_layoutFeatures == null) ? scaleY : _layoutFeatures.layoutScaleY;
             if (prevValue == value)
                 return;

@@ -2652,7 +2652,7 @@
      */
     override public function get scaleZ():Number
     {
-        return ((_layoutFeatures == null)? super.scaleZ:_layoutFeatures.layoutScaleZ);
+        return (_layoutFeatures == null) ? super.scaleZ : _layoutFeatures.layoutScaleZ;
     }

     /**
@@ -11822,15 +11822,16 @@

     /**
-     * Initializes the implementation and storage of some of the less frequently used
-     * advanced layout features of a component.  Call this function before attempting to use any of the
-     * features implemented by the AdvancedLayoutFeatures object.
-     *
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  Initializes the implementation and storage of some of the less frequently
+     *  used advanced layout features of a component.
+     *
+     *  Call this function before attempting to use any of the features implemented
+     *  by the AdvancedLayoutFeatures object.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected function initAdvancedLayoutFeatures():void
     {
@@ -11851,6 +11852,12 @@
         invalidateTransform();
     }

+    /**
+     *  @private
+     *  Helper function to update the storage vairable _transform.
+     *  Also updates the target proeprty of the new and the old
+     *  values.
+     */
     private function setTransform(value:flash.geom.Transform):void
     {
         // Clean up the old transform
@@ -11929,9 +11936,9 @@
      *  @copy mx.core.ILayoutElement#postLayoutTransformOffsets
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get postLayoutTransformOffsets():TransformOffsets
     {
@@ -11964,9 +11971,9 @@
      *  component, one will be added automatically.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function set maintainProjectionCenter(value:Boolean):void
     {
@@ -11989,9 +11996,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function setLayoutMatrix(value:Matrix, invalidateLayout:Boolean):void
     {
@@ -12020,9 +12027,9 @@
      *  doesn't trigger a layout pass.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function setLayoutMatrix3D(value:Matrix3D, invalidateLayout:Boolean):void
     {
@@ -12042,12 +12049,12 @@
     private static var xformPt:Point;

     /**
-     * @copy mx.core.ILayoutElement#transformAround
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @copy mx.core.ILayoutElement#transformAround
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function transformAround(transformCenter:Vector3D,
                                     scale:Vector3D = null,
@@ -12156,7 +12163,9 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public function transformPointToParent(transformCenter:Vector3D,position:Vector3D,postLayoutPosition:Vector3D):void
+    public function transformPointToParent(transformCenter:Vector3D,
+                                           position:Vector3D,
+                                           postLayoutPosition:Vector3D):void
     {
         if (_layoutFeatures != null)
         {
@@ -12196,46 +12205,50 @@
     }

     /**
-     *  The transform matrix that is used to calculate a component's layout relative to its siblings. This matrix is defined by
-     *  the component's 3D properties (which include the 2D properties such as x, y, rotation,
-     *  scaleX, scaleY, transformX, and transformY, as well as rotationX,
-     *  rotationY, scaleZ, z, and transformZ.
+     *  The transform matrix that is used to calculate a component's layout
+     *  relative to its siblings. This matrix is defined by the component's
+     *  3D properties (which include the 2D properties such as x,
+     *  y, rotation, scaleX,
+     *  scaleY, transformX, and
+     *  transformY, as well as rotationX,
+     *  rotationY, scaleZ, z, and
+     *  transformZ.
      *
      *
Most components do not have any 3D transform properties set on them.

      *
-     *
This matrix is modified by the values of the offset property to determine its final, computed matrix.

-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *
This layout matrix is combined with the values of the
+     *  postLayoutTransformOffsets property to determine the
+     *  component's final, computed matrix.

+     *
+     *  @see #postLayoutTransformOffsets
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function set layoutMatrix3D(value:Matrix3D):void
     {
-		if (_layoutFeatures == null)
-			initAdvancedLayoutFeatures();
-
-        // layout features will internally make a copy of this matrix rather than
-        // holding onto a reference to it.
-        _layoutFeatures.layoutMatrix3D = value;
-        invalidateTransform();
-        invalidateParentSizeAndDisplayList();
-    }
-
-    /**
-     * @inheritDoc
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+        setLayoutMatrix3D(value, true /*invalidateLayout*/);
+    }
+
+    //----------------------------------
+    //  depth
+    //----------------------------------
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get depth():Number
     {
-        return (_layoutFeatures == null)? 0:_layoutFeatures.depth;
-    }
-
-    [Bindable("layerChange")]
+        return (_layoutFeatures == null) ? 0 : _layoutFeatures.depth;
+    }
+
     /**
      * @private
      */
@@ -12247,34 +12260,38 @@
 			initAdvancedLayoutFeatures();

         _layoutFeatures.depth = value;
-        dispatchEvent(new FlexEvent("layerChange"));
-        if (parent != null && parent is UIComponent)
-            (parent as UIComponent).invalidateLayering();
-    }
-
-    /**
-     *  Called by a component's items to indicate that their layer property has changed.
-     *  Note that while this function is defined on UIComponent, it is up to subclasses
-     *  to implement support for complex layering.  By default, only Groups support
+        if (parent is UIComponent)
+            UIComponent(parent).invalidateLayering();
+    }
+
+    /**
+     *  Called by a component's items to indicate that their depth
+     *  property has changed. Note that while this function is defined on
+     *  UIComponent, it is up to subclasses to implement support
+     *  for complex layering.
+     *
+     *  By default, only Group and DataGroup support
      *  arbitrary layering of their children.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *
+     *  @see #depth
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.4
+     *  @productversion Flex 4
      */
     public function invalidateLayering():void
     {
-
-    }
-
-    /**
-     *  Commits the computed matrix built from the combination of the layout matrix and the transform offsets to the flash displayObject's transform.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+    }
+
+    /**
+     *  Commits the computed matrix built from the combination of the layout
+     *  matrix and the transform offsets to the flash displayObject's transform.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected function applyComputedMatrix():void
     {
@@ -12296,9 +12313,9 @@
      *  @param stretchY The vertical component of the stretch factor.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected function setStretchXY(stretchX:Number, stretchY:Number):void
     {
@@ -12331,9 +12348,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getPreferredBoundsWidth(postLayoutTransform:Boolean=true):Number
     {
@@ -12344,9 +12361,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getPreferredBoundsHeight(postLayoutTransform:Boolean=true):Number
     {
@@ -12357,9 +12374,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getMinBoundsWidth(postLayoutTransform:Boolean=true):Number
     {
@@ -12370,9 +12387,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getMinBoundsHeight(postLayoutTransform:Boolean=true):Number
     {
@@ -12383,9 +12400,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getMaxBoundsWidth(postLayoutTransform:Boolean=true):Number
     {
@@ -12396,9 +12413,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getMaxBoundsHeight(postLayoutTransform:Boolean=true):Number
     {
@@ -12409,9 +12426,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getBoundsXAtSize(width:Number, height:Number, postLayoutTransform:Boolean = true):Number
     {
@@ -12423,9 +12440,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getBoundsYAtSize(width:Number, height:Number, postLayoutTransform:Boolean = true):Number
     {
@@ -12437,9 +12454,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getLayoutBoundsWidth(postLayoutTransform:Boolean=true):Number
     {
@@ -12450,9 +12467,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getLayoutBoundsHeight(postLayoutTransform:Boolean=true):Number
     {
@@ -12463,9 +12480,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getLayoutBoundsX(postLayoutTransform:Boolean=true):Number
     {
@@ -12476,9 +12493,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getLayoutBoundsY(postLayoutTransform:Boolean=true):Number
     {
@@ -12489,9 +12506,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function setLayoutBoundsPosition(x:Number, y:Number, postLayoutTransform:Boolean=true):void
     {
@@ -12502,9 +12519,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function setLayoutBoundsSize(width:Number,
                                         height:Number,
@@ -12517,9 +12534,9 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getLayoutMatrix():Matrix
     {
@@ -12542,9 +12559,35 @@
      *  @inheritDoc
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get hasLayoutMatrix3D():Boolean
+    {
+        return _layoutFeatures ? _layoutFeatures.layoutIs3D : false;
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get is3D():Boolean
+    {
+        return _layoutFeatures ? _layoutFeatures.is3D : false;
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function getLayoutMatrix3D():Matrix3D
     {


Transferred from the Adobe Open Source Subversion Repository

Revision: 9399
Author:   aharui@adobe.com
Date:     2009-08-19T20:39:10.836192Z

Log Message:
-----------
Check in prototypes of ControlBars in Panel and Application, Spark Containers in Halo Navigators, Halo ViewStack in Spark ButtonBar.  APIs should match spec but are subject to change from PARB.  Skins are subject to tweaking after XD review

QE Notes: The following tests will fail and need updating:
gumbo/containers/Panel/Properties/Panel_Properties_position Panel_Properties_rotate
apollo/spark/components/Window/properties/window_properties_titleIcon_tests titleIcon_test8

Doc Notes: None
Bugs: None
Reviewer: Darrell, Glenn, Ryan
API Change: No
Is noteworthy for integration: No
tests: checkintests mustella/gumbo/components/Application, gumbo/components/ButtonBar, gumbo/containers/Panel, apollo/gumbo/spark/Window, containers/ViewStack, containers/Accordion,

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/builder/ComponentBuilder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/spark/SparkChromeWindowedApplicationSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/NavigatorChild.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/framework/src/mx/events/FlexEvent.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/framework/src/mx/containers/ViewStack.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/IDeferredContentOwner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/FocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NavBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler_en.properties</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/INavigatable.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/spark-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/StandardDefs.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/PanelSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/INavigatorContent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/TabNavigator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/PanelSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IDeferredContentOwner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ApplicationSkin.mxml</path>

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

--- frameworks/projects/framework/src/mx/events/FlexEvent.as
+++ frameworks/projects/framework/src/mx/events/FlexEvent.as
@@ -222,7 +222,7 @@
      *       Object listening for the event.

      *

      *
-     *  @eventType deferredContentCreate
+     *  @eventType contentCreationComplete
      *
      *  @langversion 3.0
      *  @playerversion Flash 9
@@ -711,6 +711,34 @@
     public static const MUTED_CHANGE:String = "mutedChange";

     /**
+     *  The FlexEvent.NAVIGATION_CHANGE constant defines the value of the
+     *  type property of the event object for a navigationChange event.
+     *
+     *
The properties of the event object have the following values:

+     *

+     *
Property	Value

+     *
bubbles	false

+     *
cancelable	false

+     *
currentTarget	The Object that defines the
+     *       event listener that handles the event. For example, if you use
+     *       myButton.addEventListener() to register an event listener,
+     *       myButton is the value of the currentTarget.

+     *
target	The Object that dispatched the event;
+     *       it is not always the Object listening for the event.
+     *       Use the currentTarget property to always access the
+     *       Object listening for the event.

+     *

+     *
+     *  @eventType navigationChange
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public static const NAVIGATION_CHANGE:String = "navigationChange";
+
+    /**
      *  @private
      */
     public static const NEW_CHILD_APPLICATION:String = "newChildApplication";


Transferred from the Adobe Open Source Subversion Repository

Revision: 8
Author:   open-source-svn-admin@adobe.com
Date:     2007-12-15T01:49:31.087529Z

Log Message:
-----------
The beginning of the open-source Flex SDK.

Populated the flex/sdk/trunk directory with an open-source subset of files from //depot/flex/sdk/...@191097 in the Faramir Perforce server. This changelist is a bit past the 3.0rc0 build.

The Ant scripts will not successfully build yet. They need to be adapted to the open-source subset.

Modified Paths:
--------------
2532 paths were modified

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

--- frameworks/projects/framework/src/mx/utils/LoaderUtil.as
+++ frameworks/projects/framework/src/mx/utils/LoaderUtil.as
@@ -0,0 +1,44 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 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.utils
+{
+
+import flash.display.LoaderInfo;
+import flash.system.Security;
+
+  /**
+   *  The LoaderUtil class defines a utility method for use with Flex RSLs.
+   */
+    public class LoaderUtil
+    {
+    /**
+     *  The root URL of a cross-domain RSL contains special text
+     *  appended to the end of the URL.
+     *  This method normalizes the URL specified in the specified LoaderInfo instance
+     *  to remove the appended text, if present.
+     *  Classes accessing LoaderInfo.url should call this method
+     *  to normalize the URL before using it.
+     *
+     *  @param loaderInfo A LoaderInfo instance.
+     *
+     *  @return A normalized LoaderInfo.url property.
+     */
+    public static function normalizeURL(loaderInfo:LoaderInfo):String
+    {
+        var url:String = loaderInfo.url;
+        var results:Array = url.split("/[[DYNAMIC]]/");
+
+        return results[0];
+    }
+
+    }
+}


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

--- frameworks/projects/rpc/src/mx/rpc/remoting/Operation.as
+++ frameworks/projects/rpc/src/mx/rpc/remoting/Operation.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.rpc.remoting
 {


Unlock an indexstream invalidate it

Unlock an indexstream invalidate it

--- src/aerys/minko/render/geometry/stream/IndexStream.as
+++ src/aerys/minko/render/geometry/stream/IndexStream.as
@@ -257,7 +257,7 @@
 			_data.position = 0;

 			if (hasChanged)
-				_changed.execute(this);
+				invalidate();
 		}

 		private static function checkReadUsage(stream : IndexStream) : void


use getTime() since its accurate.

use getTime() since its accurate.

--- Agent.as
+++ Agent.as
@@ -182,7 +182,7 @@

     	   trace(PREFIX, "Connected");

-           var now:uint = new Date().time;
+           var now:Number = new Date().getTime();
            var seconds:uint = now / 1000;
            var timer:uint = getTimer();

@@ -192,7 +192,7 @@
            _socket.writeUnsignedInt(timer);
            _socket.flush();

-           trace(PREFIX, seconds, now - (seconds * 1000), timer);
+           trace(PREFIX, now, seconds, now - (seconds * 1000), timer);
     	}

     	private function close(e:Event):void {


removed property draggable.  property is in DragItShift

--- activities/module-2/series-measuring/ResistorBase.as
+++ activities/module-2/series-measuring/ResistorBase.as
@@ -37,9 +37,6 @@
 		private var colors:Array = null;

         private var componentName:String;
-
-		//////public variable to set if resistor is draggable
-		public var draggable:Boolean = false;

         //////////public variables for breadboard probeQuery_handler
         public var blackProbeOnRight:Boolean = false;


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

--- frameworks/projects/automation/src/mx/automation/delegates/containers/PanelAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/containers/PanelAutomationImpl.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.automation.delegates.containers
 {


Actually, let's make that take a prefix argument, and only return properties
that begin with that prefix.

git-svn-id: a3e1eb16dde062992de22c830ed8045c8013209a@309 c613c5cb-e716-0410-b11b-feb51c14d237

--- src/as/com/threerings/ezgame/EZGameControl.as
+++ src/as/com/threerings/ezgame/EZGameControl.as
@@ -266,13 +266,15 @@
     }

     /**
-     * Get the names of all currently-set properties.
-     */
-    public function getProperyNames () :Array
+     * Get the names of all currently-set properties that begin with the specified prefix.
+     */
+    public function getProperyNames (prefix :String = "") :Array
     {
         var props :Array = [];
         for (var s :String in _gameData) {
-            props.push(s);
+            if (s.lastIndexOf(prefix, 0) == 0) {
+                props.push(s);
+            }
         }
         return props;
     }


That would be occu-PANTS!

That would be occu-PANTS!

git-svn-id: a3e1eb16dde062992de22c830ed8045c8013209a@217 c613c5cb-e716-0410-b11b-feb51c14d237

--- src/as/com/threerings/ezgame/EZGameControl.as
+++ src/as/com/threerings/ezgame/EZGameControl.as
@@ -435,9 +435,9 @@
      * first time this is requested per game instance it will be retrieved
      * from the database. After that, it will be returned from memory.
      */
-    public function getUserCookie (occuapntId :int, callback :Function) :void
-    {
-        callEZCode("getUserCookie_v2", occuapntId, callback);
+    public function getUserCookie (occupantId :int, callback :Function) :void
+    {
+        callEZCode("getUserCookie_v2", occupantId, callback);
     }

     /**


starting work on the ParserToken

starting work on the ParserToken

--- as/org/osflash/asjs/parser/ParserToken.as
+++ as/org/osflash/asjs/parser/ParserToken.as
@@ -20,6 +20,17 @@
             var cached:ParserState = state.getCached(id);
             if(cached != null) return cached;

+            var r:Boolean = state.length >= token.length && state.substring(0, token.length) == token;
+
+            if(r){
+                cached = { remaining: state.from(token.length), matched: token, ast: token };
+            }else{
+                cached = null;
+            }
+            state.putCached(id, cached);
+
+            return cached;
+
         }

     }


Default port should be set as convenience for developer. Some documentation from the XEP.

git-svn-id: c197267f952b24206666de142881703007ca05d5@13260 b35dd754-fafc-0310-a699-88a17e54d16e

--- src/org/igniterealtime/xiff/core/XMPPBOSHConnection.as
+++ src/org/igniterealtime/xiff/core/XMPPBOSHConnection.as
@@ -170,9 +170,44 @@
 			this.secure = secure;
 			_responseTimer = new Timer( 0.0, 1 );
 			_responseTimer.addEventListener( TimerEvent.TIMER_COMPLETE, processResponse );
-		}
-
-		/**
+
+			// Default values for super class
+			port = XMPPBOSHConnection.HTTP_PORT;
+		}
+
+		/**
+		 * The first request from the client to the connection manager requests a new session.
+		 *
+		 *
The body element of the first request SHOULD possess
+		 * the following attributes (they SHOULD NOT be included in any other requests
+		 * except as specified under Adding Streams To A Session):

+		 *
+		 *

+		 *
'to' -- This attribute specifies the target domain of the first stream.

+		 *
'xml:lang' -- This attribute (as defined in Section 2.12 of XML 1.0 [17])
+		 *   specifies the default language of any human-readable XML character data
+		 *   sent or received during the session.

+		 *
'ver' -- This attribute specifies the highest version of the BOSH protocol
+		 *   that the client supports. The numbering scheme is "major.minor" (where
+		 *   the minor number MAY be incremented higher than a single digit, so it
+		 *   MUST be treated as a separate integer). Note: The 'ver' attribute should
+		 *   not be confused with the version of any protocol being transported.

+		 *
'wait' -- This attribute specifies the longest time (in seconds) that
+		 *   the connection manager is allowed to wait before responding to any request
+		 *   during the session. This enables the client to limit the delay before it
+		 *   discovers any network failure, and to prevent its HTTP/TCP connection
+		 *   from expiring due to inactivity.

+		 *
'hold' -- This attribute specifies the maximum number of requests the
+		 *   connection manager is allowed to keep waiting at any one time during the
+		 *   session. If the client is not able to use HTTP Pipelining then this SHOULD
+		 *   be set to "1".

+		 *

+		 *
+		 *
Note: Clients that only support Polling Sessions MAY prevent the connection
+		 * manager from waiting by setting 'wait' or 'hold' to "0". However, polling is
+		 * NOT RECOMMENDED since the associated increase in bandwidth consumption and
+		 * the decrease in responsiveness are both typically one or two orders of
+		 * magnitude!

 		 *
 		 * @param	streamType Not used
 		 * @see http://xmpp.org/extensions/xep-0206.html#initiate
@@ -247,8 +282,57 @@
 		}

 		/**
+		 * Session Creation Response
+		 *
+		 *
After receiving a new session request, the connection manager MUST generate
+		 * an opaque, unpredictable session identifier (or SID). The SID MUST be unique
+		 * within the context of the connection manager application. The body
+		 * element of the connection manager's response to the client's session creation
+		 * request MUST possess the following attributes (they SHOULD NOT be included in
+		 * any other responses):

+		 *
+		 *

+		 *
'sid' -- This attribute specifies the SID

+		 *
'wait' -- This is the longest time (in seconds) that the connection manager
+		 *   will wait before responding to any request during the session. The time MUST be
+		 *   less than or equal to the value specified in the session request.

+		 *

+		 *
+		 *
The body element SHOULD also include the following attributes
+		 * (they SHOULD NOT be included in any other responses):

+		 *
+		 *

+		 *
'ver' -- This attribute specifies the highest version of the BOSH protocol
+		 *   that the connection manager supports, or the version specified by the client in
+		 *   its request, whichever is lower.

+		 *
'polling' -- This attribute specifies the shortest allowable polling
+		 *   interval (in seconds). This enables the client to not send empty request
+		 *   elements more often than desired (see Polling Sessions and Overactivity).

+		 *
'inactivity' -- This attribute specifies the longest allowable inactivity
+		 *   period (in seconds). This enables the client to ensure that the periods with
+		 *   no requests pending are never too long (see Polling Sessions and Inactivity).

+		 *
'requests' -- This attribute enables the connection manager to limit the
+		 *   number of simultaneous requests the client makes (see Overactivity and
+		 *   Polling Sessions). The RECOMMENDED values are either "2" or one more than
+		 *   the value of the 'hold' attribute specified in the session request.

+		 *
'hold' -- This attribute informs the client about the maximum number
+		 *   of requests the connection manager will keep waiting at any one time during
+		 *   the session. This value MUST NOT be greater than the value specified by the
+		 *   client in the session request.

+		 *
'to' -- This attribute communicates the identity of the backend server
+		 *   to which the client is attempting to connect.

+		 *

+		 *
+		 *
The connection manager MAY include an 'accept' attribute in the session
+		 * creation response element, to specify a space-separated list of the content
+		 * encodings it can decompress. After receiving a session creation response
+		 * with an 'accept' attribute, clients MAY include an HTTP Content-Encoding
+		 * header in subsequent requests (indicating one of the encodings specified
+		 * in the 'accept' attribute) and compress the bodies of the requests
+		 * accordingly.

 		 *
 		 * @param	responseBody
+		 * @see http://xmpp.org/extensions/xep-0124.html#session-response
 		 * @see http://xmpp.org/extensions/xep-0206.html#create
 		 */
 		public function processConnectionResponse( responseBody:XML ):void
@@ -286,7 +370,9 @@
 			addEventListener( LoginEvent.LOGIN, handleLogin );
 		}

-		//do nothing, we use polling instead
+		/**
+		 * Does nothing, BOSH uses polling instead.
+		 */
 		override public function sendKeepAlive():void
 		{
 		}
@@ -318,6 +404,9 @@
 			_streamRestarted = true;
 		}

+		/**
+		 * TODO: Is this somthing that could be safely removed?
+		 */
 		override protected function handleNodeType( node:XML ):void
 		{
 			super.handleNodeType( node );
@@ -429,6 +518,7 @@
 				active = false;
 			}

+			// sid is supposed to be only available when creating a new session
 			// http://xmpp.org/extensions/xep-0206.html#create
 			if ( xmlData.hasOwnProperty("@sid") && !loggedIn )
 			{
@@ -608,6 +698,8 @@
 		 */
 		override protected function sendDataToServer( data:ByteArray ):void
 		{
+			trace("XMPPBOSHConnection::sendDataToServer. httpServer: " + httpServer);
+
 			var req:URLRequest = new URLRequest( httpServer );
 			req.method = URLRequestMethod.POST;
 			req.contentType = "text/xml"; // How about while compressed data?
@@ -673,6 +765,8 @@
 		/**
 		 * HTTP bind requests type. If secure, the requests will be sent
 		 * through HTTPS. If not, through HTTP.
+		 *
+		 *
Please note that the port needs to be set separately.

 		 */
 		public function get secure():Boolean
 		{


fixed warning

fixed warning

Change-Id: I78e554ccd163518500cc783f4c69db329ced640b

--- WeaveCore/src/weave/compiler/Compiler.as
+++ WeaveCore/src/weave/compiler/Compiler.as
@@ -1715,7 +1715,7 @@
 			var call:CompiledFunctionCall = compiledObject as CompiledFunctionCall;

 			// handle custom decompile function
-			if (call.decompile)
+			if (call.decompile != null)
 				return call.decompile(call);

 			// special case for variable lookup


added pluck()

added pluck()

Change-Id: I2fad1fcd4c927027598e657d89830a7b7416389b

--- WeaveData/src/weave/utils/VectorUtils.as
+++ WeaveData/src/weave/utils/VectorUtils.as
@@ -420,5 +420,16 @@
 			}
 			return output;
 		}
+
+		/**
+		 * Gets a list of values of a property from a list of objects.
+		 * @param array An Array or Vector of Objects.
+		 * @param property The property name to get from each object
+		 * @return A list of the values of the specified property for each object in the original list.
+		 */
+		public static function pluck(array:*, property:String):*
+		{
+			return array.map(function(item:Object, i:int, a:*):* { return item[property]; });
+		}
 	}
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 18034
Author:   smgilson@adobe.com
Date:     2010-10-06T18:57:34.121269Z

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

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/MobileTextField.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/mobilecomponents/src/spark/components/MobileIconItemRenderer.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as
@@ -312,6 +312,13 @@
     /**
      *  Controls word wrapping within the text.
      *  This property corresponds to the lineBreak style.
+     *
+     *
Text may be set to fit the width of the container (LineBreak.TO_FIT),
+     *  or can be set to break only at explicit return or line feed characters (LineBreak.EXPLICIT).

+     *
+     *
Legal values are flashx.textLayout.formats.LineBreak.EXPLICIT,
+     *  flashx.textLayout.formats.LineBreak.TO_FIT, and
+     *  flashx.textLayout.formats.FormatValue.INHERIT.

      *
      *  @langversion 3.0
      *  @playerversion Flash 10.1


set timeout to reload alt-audio playlists

--- src/org/mangui/hls/loader/AltAudioLevelLoader.as
+++ src/org/mangui/hls/loader/AltAudioLevelLoader.as
@@ -124,6 +124,8 @@
                     CONFIG::LOGGING {
                         Log.debug("switch to audio track " + _current_track + ", load Playlist");
                     }
+                    _retry_timeout = 1000;
+                    _retry_count = 0;
                     clearTimeout(_timeoutID);
                     _timeoutID = setTimeout(_loadAudioLevelPlaylist, 0);
                 }


?methodFullName?????????

?methodFullName?????????

--- as3/com/netease/protobuf/CustomOption.as
+++ as3/com/netease/protobuf/CustomOption.as
@@ -20,16 +20,21 @@
 			if (m == null) {
 				return null
 			}
-			const serviceClass:Class = Class(getDefinitionByName(m[1]));
-			var optionsBytesByMethodName:Object
+			const serviceClass:Class = Class(getDefinitionByName(m[1]))
+			var optionsBytes:ByteArray
 			try {
-				optionsBytesByMethodName = serviceClass.OPTIONS_BYTES_BY_METHOD_NAME
+				optionsBytes =
+					serviceClass.OPTIONS_BYTES_BY_METHOD_NAME[methodFullName]
 			} catch (e:ReferenceError) {
 				return null
 			}
-			const result:MethodOptions = new MethodOptions
-			result.mergeFrom(optionsBytesByMethodName[methodFullName])
-			return result
+			if (optionsBytes) {
+				const result:MethodOptions = new MethodOptions
+				result.mergeFrom(optionsBytes)
+				return result
+			} else {
+				return null
+			}
 		}

 		public static function getServiceOptions(serviceClass:Class):ServiceOptions {


Fix cross-domain image loading on Flash.

In order to programmatically access the pixels of cross-domain images,
Flash requires us to pass a LoaderContext with the checkPolicyFile
option set into the loader. Otherwise, cross-domain image requests
made by Flash will fail with a cryptic error.

--- src/renderers/FlashCommon.as
+++ src/renderers/FlashCommon.as
@@ -34,6 +34,7 @@
   import flash.geom.Rectangle;
   import flash.geom.Vector3D;
   import flash.net.URLRequest;
+  import flash.system.LoaderContext;
   import flash.system.Security;
   import flash.utils.Dictionary;

@@ -286,12 +287,15 @@
       var loader:Loader = new Loader();
       imageMap[id] = loader;

-      // TODO: Check if there are there other kinds of errors we can catch.
       loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadSuccess);
       loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);

+      // Check the server policy file for cross-domain requests.
+      var loaderContext:LoaderContext = new LoaderContext();
+      loaderContext.checkPolicyFile = true;
+
       var urlRequest:URLRequest = new URLRequest(url);
-      loader.load(urlRequest);
+      loader.load(urlRequest, loaderContext);

       return id;


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/framework/src/mx/core/ResourceModuleRSLItem.as
+++ frameworks/projects/framework/src/mx/core/ResourceModuleRSLItem.as
@@ -17,10 +17,10 @@
 import flash.events.IEventDispatcher;
 import flash.events.IOErrorEvent;
 import flash.events.ProgressEvent;
+import flash.system.ApplicationDomain;
 import mx.events.ResourceEvent;
 import mx.events.RSLEvent;
 import mx.resources.IResourceManager;
-import mx.resources.ResourceManager;

 [ExcludeClass]

@@ -44,6 +44,17 @@

 	//--------------------------------------------------------------------------
 	//
+	//  Class variables
+	//
+	//--------------------------------------------------------------------------
+
+    /**
+	 *  @private
+     */
+	public static var resourceManager:IResourceManager;
+
+	//--------------------------------------------------------------------------
+	//
 	//  Constructor
 	//
 	//--------------------------------------------------------------------------
@@ -51,10 +62,19 @@
     /**
 	 *  @private
      */
-	public function ResourceModuleRSLItem(url:String)
+	public function ResourceModuleRSLItem(url:String, appDomain:ApplicationDomain)
 	{
 		super(url);
+		this.appDomain = appDomain;
 	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Variables
+	//
+	//--------------------------------------------------------------------------
+
+	private var appDomain:ApplicationDomain;

 	//--------------------------------------------------------------------------
 	//
@@ -93,7 +113,20 @@
 	    chainedSecurityErrorHandler = securityErrorHandler;
 	    chainedRSLErrorHandler = rslErrorHandler;

-		var resourceManager:IResourceManager = ResourceManager.getInstance();
+		if (!resourceManager)
+		{
+			// do this to prevent dependency on ResourceManager
+			if (appDomain.hasDefinition("mx.resources::ResourceManager"))
+			{
+				var resourceManagerClass:Class =
+					Class(appDomain.getDefinition("mx.resources::ResourceManager"));
+				resourceManager =
+					IResourceManager(resourceManagerClass["getInstance"]());
+			}
+			else
+				return;
+		}
+

 		var eventDispatcher:IEventDispatcher =
 			resourceManager.loadResourceModule(url);


Transferred from the Adobe Open Source Subversion Repository

Revision: 2876
Author:   jimurphy@adobe.com
Date:     2008-08-19T00:53:52.343767Z

Log Message:
-----------
-integrate:
 -vellum build 152
 -player build 576

-applied Gordons patch for the vellum API change
-removed the player/[os] directories.  player/10/[os] will now be the directory in which players will be integrated
-added new variable to build.xml, player.target so that checkintests run properly and the staging for the packaging will continue to work with the structure changes

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/Parser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/win/Install Flash Player 10 Plugin.exe</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/text_importExport.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/graphicsClasses/TextFlowComposer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/win/Install Flash Player 10 ActiveX.exe</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/graphicsClasses/TextGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/player/10/playerglobal.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/text_edit.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/lnx/flashplayer.tar.gz</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/TextView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/TextGraphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/utils/TextUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/lnx/install_flash_player_10_linux.tar.gz</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/lnx/libflashplayer.so.tar.gz</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/text_model.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/win/FlashPlayer.exe</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/mac/Flash Player.app.zip</path>

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -40,26 +40,24 @@
 import text.edit.SelectionState;
 import text.edit.SplitParOperation;
 import text.edit.StyleChangeOperation;
+import text.elements.FlowElement;
+import text.elements.ParagraphElement;
+import text.elements.SpanElement;
+import text.elements.TextFlow;
+import text.formats.BlockProgression;
+import text.formats.CharacterFormat;
+import text.formats.ContainerFormat;
+import text.formats.Direction;
+import text.formats.ICharacterFormat;
+import text.formats.IContainerFormat;
+import text.formats.IParagraphFormat;
+import text.formats.LineBreak;
+import text.formats.ParagraphFormat;
+import text.formats.TextAlign;
+import text.formats.TextDecoration;
+import text.formats.VerticalAlign;
+import text.formats.WhitespaceCollapse;
 import text.importExport.TextFilter;
-import text.model.BlockProgression;
-import text.model.CharacterFormat;
-import text.model.ContainerFormat;
-import text.model.Direction;
-import text.model.FlowElement;
-import text.model.ICharacterFormat;
-import text.model.IContainerFormat;
-import text.model.IParagraphFormat;
-import text.model.LeafElement;
-import text.model.LineBreak;
-import text.model.ModelChangeEvent;
-import text.model.Paragraph;
-import text.model.ParagraphFormat;
-import text.model.Span;
-import text.model.TextAlign;
-import text.model.TextDecoration;
-import text.model.TextFlow;
-import text.model.VerticalAlign;
-import text.model.WhitespaceCollapse;

 //--------------------------------------
 //  Events
@@ -1520,8 +1518,8 @@
 	private function createEmptyTextFlow():TextFlow
 	{
 		var textFlow:TextFlow = new TextFlow();
-		var p:Paragraph = new Paragraph();
-		var span:Span = new Span();
+		var p:ParagraphElement = new ParagraphElement();
+		var span:SpanElement = new SpanElement();
 		textFlow.replaceElements(0, 0, p);
 		p.replaceElements(0, 0, span);
 		return textFlow;
@@ -1659,9 +1657,6 @@
      */
     private function addListeners(textFlow:TextFlow):void
     {
-        textFlow.addEventListener(
-            ModelChangeEvent.MODEL_CHANGE, textFlow_modelChangeHandler);
-
         textFlow.selectionManager.addEventListener(
             SelectionChangedEvent.SELECTION_CHANGED,
             editManager_selectionChangeHandler);
@@ -1715,7 +1710,7 @@
      */
     public function export():XML
     {
-        return TextFilter.export(textFlow, TextFilter.XFL_FORMAT).children()[0];
+        return TextFilter.export(textFlow, TextFilter.TCAL_FORMAT).children()[0];
     }

     /**
@@ -1946,15 +1941,6 @@
         newEvent.operation = event.operation;
         dispatchEvent(newEvent);
     }
-
-    /**
-     *  @private
-     *  Called when the TextFlow dispatches a 'modelChange' event.
-     */
-    private function textFlow_modelChangeHandler(event:ModelChangeEvent):void
-    {
-        //trace("modelChange");
-    }
 }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 7554
Author:   cframpto@adobe.com
Date:     2009-06-04T17:33:18.612906Z

Log Message:
-----------
-Dispatch FlexEvent.VALUE_COMMIT events from TextArea/TextInput when text changes.  This is the default trigger event for the validator.
- Added [DefaultTriggerEvent] tag to TextArea/TextInput per mail from Sameer Bhatt from FB.
- Made RET text bindable.

QA Notes:
Doc Notes:
Bugs: SDK-20165, SDK-20667
Reviewers: Gordon

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/TextInput.as</path>

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -485,13 +485,10 @@
     /**
      *  @private
      *  If true, the content of the textFlow has changed in some way.  In most
-     *  cases this is the same as damaged.  The one exception is if setText
-     *  is used to initialize the TextContainerManager.  It does not dispatch
-     *  a damage event (although it probably should).
+     *  cases this is the same as damaged.
      *
      *  At the end of composition, the change event should be dispatched if it
      *  wasn't already dispatched one or more times for editing operations.
-     *
      */
     private var textFlowChanged:Boolean = false;

@@ -1358,7 +1355,7 @@
      */
     private var textChanged:Boolean = false;

-    //[Bindable("change")]
+    [Bindable("change")]

     /**
      *  The text String displayed by this TextView.


Transferred from the Adobe Open Source Subversion Repository

Revision: 11254
Author:   cframpto@adobe.com
Date:     2009-10-29T15:03:08.155215Z

Log Message:
-----------
Once initialized, hostFormat should never be null.  Styles can be changed in event handlers that are dispatched in the middle of the component lifecycle.  Added 10 styles from TLF's TextLayoutFormat to the sizeInvalidatingStyles array since they each can impact the text measurement.

QE notes:
Doc notes:
Bugs: SDK-23651
Reviewer: Gordon
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -596,12 +596,14 @@

     /**
      *  @private
-     *  This object determines the default text formatting used
-     *  by this component, based on its CSS styles.
-     *  It is set to null by stylesInitialized() and styleChanged(),
-     *  and recreated whenever necessary in commitProperties().
-     */
-    private var hostFormat:ITextLayoutFormat;
+     *  The hostFormat object in the _textContainerManager determines the
+     *  default text formatting used by this component, based on its CSS styles.
+     *  This flag is used by updateStylesIfChanged() determine when the object
+     *  must be reinitialized.  It is set in stylesInitialized() and
+     *  styleChanged(), and cleared in commitProperties().  After
+     *  initialization, the hostFormat object should never be null.
+     */
+    private var hostFormatChanged:Boolean;

     /**
      *  @private
@@ -2184,39 +2186,9 @@
     override protected function commitProperties():void
     {
         super.commitProperties();
-
-        if (!hostFormat)
-        {
-            // If the CSS styles for this component specify an embedded font,
-            // embeddedFontContext will be set to the module factory that
-            // should create TextLines (since they must be created in the
-            // SWF where the embedded font is.)
-            // Otherwise, this will be null.
-            embeddedFontContext = getEmbeddedFontContext();
-
-            _textContainerManager.swfContext =
-				ISWFContext(embeddedFontContext);
-
-            _textContainerManager.hostFormat =
-            hostFormat = new CSSTextLayoutFormat(this);
-            // Note: CSSTextLayoutFormat has special processing
-            // for the fontLookup style. If it is "auto",
-            // the fontLookup format is set to either
-            // "device" or "embedded" depending on whether
-            // embeddedFontContext is null or non-null.
-        }
-
-        if (selectionFormatsChanged)
-        {
-            _textContainerManager.invalidateSelectionFormats();
-
-            selectionFormatsChanged = false;
-        }
-
-        // If fontMetrics changed, recalculate the ascent, and descent.
-        if (isNaN(ascent) || isNaN(descent))
-            calculateFontMetrics();
-
+
+        updateStylesIfChanged();
+
         // EditingMode needs to be current before attempting to set a
         // selection below.
         if (enabledChanged || selectableChanged || editableChanged)
@@ -2393,6 +2365,11 @@
     override protected function measure():void
     {
         super.measure();
+
+        // Styles can be changed in event handlers while in the middle
+        // of the component lifecycle.  Make sure they are not stale when
+        // composing text.
+        updateStylesIfChanged();

         // ScrollerLayout.measure() has heuristics for figuring out whether to
         // use the actual content size or the preferred size when there are
@@ -2542,6 +2519,11 @@
     {
         //trace("updateDisplayList", unscaledWidth, unscaledHeight, "autoSize", autoSize);

+        // Styles can be changed in event handlers while in the middle
+        // of the component lifecycle.  Make sure they are not stale when
+        // composing text.
+        updateStylesIfChanged();
+
         // Check if the auto-size text is constrained in some way and needs
         // to be remeasured.  If one of the dimension changes, the text may
         // compose differently and have a different size which the layout
@@ -2595,7 +2577,8 @@

         ascent = NaN;
         descent = NaN;
-        hostFormat = null;
+
+        hostFormatChanged = true;
     }

     /**
@@ -2610,21 +2593,16 @@
     {
         super.styleChanged(styleProp);

-        if (styleProp == null || styleProp == "styleName" ||
-            styleProp == "fontFamily" || styleProp == "fontSize")
-        {
-            ascent = NaN;
-            descent = NaN;
-        }
-
         // If null or "styleName" is passed it indicates that
         // multiple styles may have changed.  Otherwise it is a single style
         // so mark whether it is the selectionFormat that changed or the
         // hostFormat that changed.
         if (styleProp == null || styleProp == "styleName")
         {
-            hostFormat = null;
+            hostFormatChanged = true;
             selectionFormatsChanged = true;
+            ascent = NaN;
+            descent = NaN;
         }
         else if (styleProp == "focusedTextSelectionColor" ||
                  styleProp == "unfocusedTextSelectionColor" ||
@@ -2634,7 +2612,14 @@
         }
         else
         {
-            hostFormat = null;
+            hostFormatChanged = true;
+
+            if (styleProp.indexOf("font") == 0 || styleProp == "cffHinting")
+            {
+                // Regenerate font swfContext and metrics as well.
+                ascent = NaN;
+                descent = NaN;
+            }
         }

         // Need to create new format(s).
@@ -3135,6 +3120,50 @@

     /**
      *  @private
+     */
+    private function updateStylesIfChanged():void
+    {
+
+        if (hostFormatChanged)
+        {
+            // Side-effect is it marks the text as damaged.
+            _textContainerManager.hostFormat = new CSSTextLayoutFormat(this);
+
+            hostFormatChanged = false;
+        }
+
+        if (isNaN(ascent) || isNaN(descent))
+        {
+            // If the CSS styles for this component specify an embedded font,
+            // embeddedFontContext will be set to the module factory that
+            // should create TextLines (since they must be created in the
+            // SWF where the embedded font is.)
+            // Otherwise, this will be null.
+            embeddedFontContext = getEmbeddedFontContext();
+
+            _textContainerManager.swfContext =
+                ISWFContext(embeddedFontContext);
+
+            // Note: CSSTextLayoutFormat has special processing
+            // for the fontLookup style. If it is "auto",
+            // the fontLookup format is set to either
+            // "device" or "embedded" depending on whether
+            // embeddedFontContext is null or non-null.
+
+            // Recalcuate the ascent and descent.
+            calculateFontMetrics();
+        }
+
+        if (selectionFormatsChanged)
+        {
+            _textContainerManager.invalidateSelectionFormats();
+
+            selectionFormatsChanged = false;
+        }
+    }
+
+    /**
+     *  @private
      *  Uses the component's CSS styles to determine the module factory
      *  that should creates its TextLines.
      */
@@ -3255,8 +3284,11 @@
      */
     mx_internal function isMeasureFixed():Boolean
     {
-        if (!hostFormat || hostFormat.blockProgression != BlockProgression.TB)
+        if (_textContainerManager.hostFormat.blockProgression !=
+            BlockProgression.TB)
+        {
             return true;
+        }

         // Is there some sort of width and some sort of height?
         return  (!isNaN(explicitWidth) || !isNaN(_widthInChars) ||
@@ -3348,7 +3380,7 @@
                 return false;

             // No reflow for explicit lineBreak
-            if (hostFormat.lineBreak == "explicit")
+            if (_textContainerManager.hostFormat.lineBreak == "explicit")
                 return false;

             widthConstraint = width;


Fixed compile error in CallbackBridgeTest from previous change.

--- asunit-4.0/test/asunit/framework/CallbackBridgeTest.as
+++ asunit-4.0/test/asunit/framework/CallbackBridgeTest.as
@@ -30,7 +30,7 @@

         [Test]
 		public function addListenerWorked():void {
-            assertEquals(1, bridge.length);
+            assertEquals(1, bridge.numListeners);
 		}

         [Test]


Transferred from the Adobe Open Source Subversion Repository

Revision: 6609
Author:   gruehle@adobe.com
Date:     2009-05-04T22:47:31.285324Z

Log Message:
-----------
Add theme attribute to theme-specific style metadata.

Example of a halo-specific style:
[Style(name="cornerRadius", type="Number", format="Length", inherit="no", theme="halo")]

Example of a spark-specific style:
[Style(name="baseColor", type="uint", format="Color", inherit="yes", theme="spark")]

Style metadata without a theme attribute is theme-agnostic, and works with either spark or halo.

Bugs: SDK-20606

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/framework/src/mx/controls/ProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/FillStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/SkinStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Button.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/BorderStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/BarColorStyle.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/CheckBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/CheckBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/IconColorStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/RadioButton.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/controls/scrollClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/SelectedFillColorsStyle.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/colorPickerClasses/SwatchPanel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ScrollControlBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/sliderClasses/Slider.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/components/supportClasses/SkinnableComponent.as</path>

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

--- frameworks/projects/mx/src/mx/controls/colorPickerClasses/SwatchPanel.as
+++ frameworks/projects/mx/src/mx/controls/colorPickerClasses/SwatchPanel.as
@@ -108,7 +108,7 @@
  *  @playerversion AIR 1.1
  *  @productversion Flex 3
  */
-[Style(name="backgroundColor", type="uint", format="Color", inherit="no")]
+[Style(name="backgroundColor", type="uint", format="Color", inherit="no", theme="halo")]

 /**
  *  Black section of a three-dimensional border, or the color section
@@ -125,7 +125,7 @@
  *  @playerversion AIR 1.1
  *  @productversion Flex 3
  */
-[Style(name="borderColor", type="uint", format="Color", inherit="no")]
+[Style(name="borderColor", type="uint", format="Color", inherit="no", theme="halo")]

 /**
  *  Number of columns in the swatch grid.
@@ -147,7 +147,7 @@
  *  @playerversion AIR 1.1
  *  @productversion Flex 3
  */
-[Style(name="highlightColor", type="uint", format="Color", inherit="yes")]
+[Style(name="highlightColor", type="uint", format="Color", inherit="yes", theme="halo")]

 /**
  *  Color for the left and right inside edges of a component's skin.
@@ -158,7 +158,7 @@
  *  @playerversion AIR 1.1
  *  @productversion Flex 3
  */
-[Style(name="shadowCapColor", type="uint", format="Color", inherit="yes")]
+[Style(name="shadowCapColor", type="uint", format="Color", inherit="yes", theme="halo")]

 /**
  *  Bottom inside color of a button's skin.
@@ -170,7 +170,7 @@
  *  @playerversion AIR 1.1
  *  @productversion Flex 3
  */
-[Style(name="shadowColor", type="uint", format="Color", inherit="yes")]
+[Style(name="shadowColor", type="uint", format="Color", inherit="yes", theme="halo")]

 /**
  *  Height of the larger preview swatch that appears above the swatch grid on
@@ -215,7 +215,7 @@
  *  @playerversion AIR 1.1
  *  @productversion Flex 3
  */
-[Style(name="swatchBorderColor", type="uint", format="Color", inherit="no")]
+[Style(name="swatchBorderColor", type="uint", format="Color", inherit="no", theme="halo")]

 /**
  *  Size of the single border around the grid of swatches.
@@ -237,7 +237,7 @@
  *  @playerversion AIR 1.1
  *  @productversion Flex 3
  */
-[Style(name="swatchGridBackgroundColor", type="uint", format="Color", inherit="no")]
+[Style(name="swatchGridBackgroundColor", type="uint", format="Color", inherit="no", theme="halo")]

 /**
  *  Height of each swatch.


FLEX-25369 stop RTE when sorting complex columns with null values

--- frameworks/projects/mx/src/mx/controls/dataGridClasses/DataGridColumn.as
+++ frameworks/projects/mx/src/mx/controls/dataGridClasses/DataGridColumn.as
@@ -1833,11 +1833,11 @@
         var currentRef:Object = data;
         if ( complexFieldNameComponents )
         {
-            for ( var i:int=0; i<complexFieldNameComponents.length; i++ )
+            for ( var i:int=0; currentRef && i < complexFieldNameComponents.length; i++ )
                 currentRef = currentRef[ complexFieldNameComponents[ i ] ];
         }

-        return currentRef;
+        return currentRef?currentRef:"";
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 20292
Author:   smgilson@adobe.com
Date:     2011-02-11T16:53:14.813687Z

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

QE notes:
Doc notes:
Bugs:
Reviewer:
Tests run: checkintets
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/supportClasses/ScrollBarBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/styles/metadata/AdvancedNonInheritingTextStyles.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/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airspark/src/spark/components/WindowedApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.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/spark/src/spark/components/SkinnableDataContainer.as</path>

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

--- frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as
+++ frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as
@@ -263,7 +263,7 @@
     //
     //--------------------------------------------------------------------------

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

     /**
@@ -576,7 +576,11 @@
      *  item renderer's label property and
      *  owner property.
      *
-     *  @param renderer The renderer being updated
+     *  @param renderer The renderer being updated.
+     *
+     *  @param itemIndex The index of the data item in the data provider.
+     *
+     *  @param data The data object this item renderer is representing.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10


Transferred from the Adobe Open Source Subversion Repository

Revision: 17666
Author:   klin@adobe.com
Date:     2010-09-10T20:20:14.829879Z

Log Message:
-----------
Fix default headerText of DataGrid columns to be an empty string instead of the object's toString. I changed the itemToString method in GridColumn static and added a optional column parameter for the two different labelFunction signatures in ColumnHeaderBar and GridColumn.

QE notes: No
Doc notes: No
Bugs: SDK-27502, SDK-27703
Reviewer: Hans
Tests run: checkintests, DataGrid
Is noteworthy for integration: No

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

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

--- frameworks/projects/spark/src/spark/components/gridClasses/GridColumn.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridColumn.as
@@ -708,14 +708,20 @@
      *  @private
      *  Common logic for itemToLabel(), dataTipToLabel().   Logically this code is
      *  similar to (not the same as) LabelUtil.itemToLabel().
-     */
-    mx_internal function itemToString(item:Object, labelPath:Array, labelFunction:Function):String
+     *  This function will pass the item and the column, if provided, to the labelFunction.
+     */
+    mx_internal static function itemToString(item:Object, labelPath:Array, labelFunction:Function, column:GridColumn = null):String
     {
         if (!item)
             return ERROR_TEXT;

         if (labelFunction != null)
-            return labelFunction(item, this);
+        {
+            if (column != null)
+                return labelFunction(item, column);
+            else
+                return labelFunction(item);
+        }

         try
         {
@@ -753,7 +759,7 @@
      */
     public function itemToLabel(item:Object):String
     {
-        return itemToString(item, dataFieldPath, labelFunction);
+        return GridColumn.itemToString(item, dataFieldPath, labelFunction, this);
     }

     /**


replaced result.jsObject with result.jsonObject for new SDK. Compiles now

--- Tablet/UploadDownload/src/Air/FileTransfer/src/webworks/io/filetransfer/FileTransferExtension.as
+++ Tablet/UploadDownload/src/Air/FileTransfer/src/webworks/io/filetransfer/FileTransferExtension.as
@@ -15,7 +15,7 @@
 * limitations under the License.
 */

-package webworks.io.filetransfer
+package webworks.io.filetransfer
 {
 	import flash.events.Event;
 	import flash.events.HTTPStatusEvent;
@@ -145,7 +145,7 @@
 				}]);
 			}

-			return result.jsObject;
+			return result.jsonObject;
 		}

 		public function download(remotePath : String, localPath : String, onProgressID : String, onErrorID : String, options : String) : Object {
@@ -195,7 +195,7 @@
 				result = new WebWorksReturnValue(data, -1);
 			}

-			return result.jsObject;
+			return result.jsonObject;
 		}

 		private function configureListeners(dispatcher : IEventDispatcher) : void {
@@ -307,5 +307,5 @@
 				"description" : event.text
 			}]);
 		}
-	}
-}
+	}
+}


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

--- frameworks/projects/automation_dmv/src/mx/automation/delegates/charts/PieSeriesAutomationImpl.as
+++ frameworks/projects/automation_dmv/src/mx/automation/delegates/charts/PieSeriesAutomationImpl.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.automation.delegates.charts
 {


changed smartform label styling to show up on dark bg

--- as3/smartform/src/com/rpath/raf/views/ExtendedFormItem.as
+++ as3/smartform/src/com/rpath/raf/views/ExtendedFormItem.as
@@ -41,7 +41,7 @@
             var lbl:Label = FormItem(event.currentTarget).itemLabel as Label;
             lbl.selectable = true;
             lbl.enabled = true;
-            lbl.setStyle("color", "blue");
+            lbl.setStyle("color", "#6666ff");
             lbl.setStyle("textDecoration", "underline");
             lbl.toolTip = "Click here for more information";
             lbl.useHandCursor = true;


Transferred from the Adobe Open Source Subversion Repository

Revision: 17020
Author:   tjordahl@adobe.com
Date:     2010-07-22T20:16:43.301178Z

Log Message:
-----------
Update the utility class that can be used to register the required class aliases
for using remoting and messaging in a non-Flex flash application.

Remove the [Mixin] declaration and the init() function.
Remove utility class from RPCClasses.as as users will call the register function directly.

Watson bug 2638788

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/rpc/src/mx/utils/RpcClassAliasInitializer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/rpc/src/RPCClasses.as</path>

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

--- frameworks/projects/rpc/src/RPCClasses.as
+++ frameworks/projects/rpc/src/RPCClasses.as
@@ -56,7 +56,6 @@
 import mx.utils.HexDecoder; HexDecoder;
 import mx.utils.HexEncoder; HexEncoder;
 import mx.utils.Translator; Translator;
-import mx.utils.RpcClassAliasInitializer; RpcClassAliasInitializer;
 }

 }


A couple more error cleanups.

A couple more error cleanups.

--- exporter/src/main/as/flump/export/AutomaticExporter.as
+++ exporter/src/main/as/flump/export/AutomaticExporter.as
@@ -209,13 +209,16 @@
         if (err is ParseError) {
             var pe :ParseError = ParseError(err);
             println("[" + pe.severity + "] @ " + pe.location + ": " + pe.message);
-        } else if (err is Error)  {
-            println("Error: " + Error(err).message);
+        } else if (err is Error) {
             println(Error(err).getStackTrace())
         } else if (err is ErrorEvent) {
             println("ErrorEvent: " + ErrorEvent(err).toString());
-            println(UncaughtErrorEvent(err).error.getStackTrace());
-        } else println("" + err);
+            if (err is UncaughtErrorEvent) {
+                println(UncaughtErrorEvent(err).error.getStackTrace());
+            }
+        } else {
+            println("" + err);
+        }
     }

     protected function print (message :String) :void {


Toggle enabledness of the export button as well.

--- exporter/src/main/as/flump/export/ProjectController.as
+++ exporter/src/main/as/flump/export/ProjectController.as
@@ -172,12 +172,7 @@

     protected function exportAll (modifiedOnly :Boolean) :void {
         // if we have one or more combined export format, publish them
-        for each (var conf :ExportConf in _conf.exports) {
-            if (conf.combine) {
-                exportCombined();
-                break;
-            }
-        }
+        if (hasCombinedConfig()) exportCombined();
         // now publish any appropriate single formats
         for each (var status :DocStatus in _flashDocsGrid.dataProvider.toArray()) {
             if (status.isValid && (!modifiedOnly || status.isModified)) {
@@ -305,12 +300,20 @@
         _win.formatOverview.text = formatNames.join(", ");
         _win.exportAll.label = hasCombined ? "Export Combined" : "Export All";
         _win.exportModified.enabled = !hasCombined;
+        _win.export.enabled = !hasCombined;

         updateWindowTitle();
     }

+    protected function hasCombinedConfig () :Boolean {
+        if (_conf == null) return false;
+        for each (var config :ExportConf in _conf.exports) if (config.combine) return true;
+        return false;
+    }
+
     protected function onSelectedItemChanged (..._) :void {
-        _win.export.enabled = _exportChooser.dir != null && _flashDocsGrid.selectionLength > 0 &&
+        _win.export.enabled = !hasCombinedConfig() && _exportChooser.dir != null &&
+            _flashDocsGrid.selectionLength > 0 &&
             _flashDocsGrid.selectedItems.some(function (status :DocStatus, ..._) :Boolean {
                 return status.isValid;
             });