Transferred from the Adobe Open Source Subversion Repository

Revision: 6891
Author:   rfrishbe@adobe.com
Date:     2009-05-13T18:07:03.276533Z

Log Message:
-----------
Fixing a bunch of Flash Component Kit bugs.

SDK-20269: Add exclude metadata for placeholder components
SDK-20670: Setting the content of a ContainerMovieClip in ActionScript doesn't size the new items
SDK-20710: ContainerMovieClip shows Flex placeholder image when Placeholder is not on the first frame
SDK-21094: Animating TransformOffset scale values on ContainerMovieClip/UIMovieClip causes size to explode to huge values
SDK-16673: Cannot have two instances of FlexContentHolder in separate SWC files, only one shows up.

For SDK-20710, we now support containers where the FlexContentHolder is not present in the first frame.  This makes creating an expanding panel relatively easy and with no code.

Had to modify the build.xml to build from a manifest file--otherwise we're not exporting the files correctly and Flash authoring won't understand them.  Because of this, I've made a change in the project files for the flash-integration Flex Builder project (and the utilities one)

QE Notes: There's a new MXP File for Flash Authoring.  I'll be making this change in the 3.x branch as well.
Doc Notes: -
Bugs: SDK-20269, SDK-20670, SDK-20710, SDK-21094, SDK-16673
Reviewer: Glenn
tests: checkintests, mustella FCK

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flash-integration/.actionScriptProperties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/utilities/src/FlashContainerPlaceholder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/build.xml</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/flash-integration/src/mx/flash/FlexContentHolder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/flash-integration/FlexComponentKit.mxp</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/ContainerMovieClip.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flash-integration/manifest.xml</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flash-integration/src/FlashIntegrationClasses.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/utilities/src/FlashComponentPlaceholder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/JSFL/MakeFlexComponent.jsfl</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flash-integration/.flexLibProperties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/readme.txt</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flash-integration/.project</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/flash-integration/readme.txt</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/utilities/src/MyFlexContentHolder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/FlexComponentKit.mxi</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/utilities/.actionScriptProperties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/JSFL/Convert Symbol to Flex Container.jsfl</path>

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

--- frameworks/projects/authoringsupport/src/MyFlexContentHolder.as
+++ frameworks/projects/authoringsupport/src/MyFlexContentHolder.as
@@ -11,24 +11,26 @@

 package
 {
-    import flash.geom.Rectangle;
-
-    import mx.core.mx_internal;
-    import mx.flash.FlexContentHolder;
-
-    public class MyFlexContentHolder extends FlexContentHolder
+import flash.geom.Rectangle;
+
+import mx.core.mx_internal;
+import mx.flash.FlexContentHolder;
+
+[ExcludeClass]
+
+public class MyFlexContentHolder extends FlexContentHolder
+{
+    public function MyFlexContentHolder()
     {
-        public function MyFlexContentHolder()
-        {
-            super();
+        super();

-            addChild(new FlexContentHolderThumbnail());
-
-            // now need to re-measure ourselves:
-            var bounds:Rectangle = getBounds(this);
-            _width = bounds.width;
-            _height = bounds.height;
-            mx_internal::$scaleX = mx_internal::$scaleY = 1;
-        }
+        addChild(new FlexContentHolderThumbnail());
+
+        // now need to re-measure ourselves:
+        var bounds:Rectangle = getBounds(this);
+        _width = bounds.width;
+        _height = bounds.height;
+        mx_internal::$scaleX = mx_internal::$scaleY = 1;
     }
+}
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 8258
Author:   egeorgie@adobe.com
Date:     2009-06-25T21:06:28.317289Z

Log Message:
-----------
Fix bug http://bugs.adobe.com/jira/browse/SDK-21665 FXG compiler should honor Graphic node attributes viewWidth and viewHeight

Fix: - Added protected viewWidth and viewHeight properties to SpriteVisualElement
- Modified compiler to generate code to initialize those props in the c-tor of the SirpteVisualElement subclass
- Modified SpriteVisualElement to mimic the behavior of the <Graphic> tag width/height properties (setting those directly in the mxml on the FXG tag used to squish the visuals, now the visuals are not distorted anymore).
- Trimmed some code from the SpriteVisualElement taking into account that its min and max match its preferred size.

Doc Notes: None
Bugs: SDK-21665
Reviewer: Pete, Jason
tests: checkintests

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

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

--- frameworks/projects/spark/src/spark/core/SpriteVisualElement.as
+++ frameworks/projects/spark/src/spark/core/SpriteVisualElement.as
@@ -42,7 +42,7 @@
     //  Properties
     //
     //--------------------------------------------------------------------------
-
+
     //----------------------------------
     //  baseline
     //----------------------------------
@@ -74,8 +74,8 @@
         _baseline = value;
         invalidateParentSizeAndDisplayList();
     }
-
-    //----------------------------------
+
+	//----------------------------------
     //  baselinePosition
     //----------------------------------

@@ -125,13 +125,16 @@
     //  height
     //----------------------------------

+    private var _explicitHeight:Number = NaN;    // The height explicitly set by the user
+    private var _layoutHeight:Number = 0;        // The height that's set by the layout
+
     /**
      *  @private
      */
     [PercentProxy("percentHeight")]
     override public function get height():Number
     {
-        return super.height;
+        return _layoutHeight;
     }

     /**
@@ -139,10 +142,10 @@
      */
     override public function set height(value:Number):void
     {
-        if (super.height == value)
-            return;
-
-        super.height = value;
+        _layoutHeight = value;
+        if (_explicitHeight == value)
+            return;
+        _explicitHeight = value;
         invalidateParentSizeAndDisplayList();
     }

@@ -459,13 +462,16 @@
     //  width
     //----------------------------------

+    private var _explicitWidth:Number = NaN;    // The width explicitly set by the user
+    private var _layoutWidth:Number = 0;      // The width that's set by the layout
+
     /**
      *  @private
      */
     [PercentProxy("percentWidth")]
     override public function get width():Number
     {
-        return super.width;
+        return _layoutWidth;
     }

     /**
@@ -473,10 +479,10 @@
      */
     override public function set width(value:Number):void
     {
-        if (super.width == value)
-            return;
-
-        super.width = value;
+        _layoutWidth = value;
+        if (_explicitWidth == value)
+            return;
+        _explicitWidth = value;
         invalidateParentSizeAndDisplayList();
     }

@@ -510,7 +516,28 @@
     public function set dir(value:String):void
     {
     }
-
+
+    //----------------------------------
+    //  viewWidth
+    //----------------------------------
+
+    private var _viewWidth:Number = NaN;
+
+    protected function set viewWidth(value:Number):void
+    {
+        _viewWidth = value;
+    }
+
+    //----------------------------------
+    //  viewHeight
+    //----------------------------------
+
+    private var _viewHeight:Number = NaN;
+
+    protected function set viewHeight(value:Number):void
+    {
+        _viewHeight = value;
+    }

     //--------------------------------------------------------------------------
     //
@@ -518,6 +545,24 @@
     //
     //--------------------------------------------------------------------------

+    private function get preferredWidth():Number
+    {
+        if (!isNaN(_explicitWidth))
+            return _explicitWidth;
+        if (!isNaN(_viewWidth))
+            return _viewWidth;
+        return super.width;
+    }
+
+    private function get preferredHeight():Number
+    {
+        if (!isNaN(_explicitHeight))
+            return _explicitHeight;
+        if (!isNaN(_viewHeight))
+            return _viewHeight;
+        return super.height;
+    }
+
     /**
      *  @inheritDoc
      */
@@ -567,7 +612,7 @@
      */
     public function getMaxBoundsWidth(postLayoutTransform:Boolean = true):Number
     {
-        return transformWidthForLayout(width, height, postLayoutTransform);
+        return getPreferredBoundsWidth(postLayoutTransform);
     }

     /**
@@ -575,7 +620,7 @@
      */
     public function getMaxBoundsHeight(postLayoutTransform:Boolean = true):Number
     {
-        return transformHeightForLayout(width, height, postLayoutTransform);
+        return getPreferredBoundsHeight(postLayoutTransform);
     }

     /**
@@ -583,7 +628,7 @@
      */
     public function getMinBoundsWidth(postLayoutTransform:Boolean = true):Number
     {
-        return transformWidthForLayout(width, height, postLayoutTransform);
+        return getPreferredBoundsWidth(postLayoutTransform);
     }

     /**
@@ -591,7 +636,7 @@
      */
     public function getMinBoundsHeight(postLayoutTransform:Boolean = true):Number
     {
-        return transformHeightForLayout(width, height, postLayoutTransform);
+        return getPreferredBoundsHeight(postLayoutTransform);
     }

     /**
@@ -599,7 +644,7 @@
      */
     public function getPreferredBoundsWidth(postLayoutTransform:Boolean = true):Number
     {
-        return transformWidthForLayout(width, height, postLayoutTransform);
+        return transformWidthForLayout(preferredWidth, preferredHeight, postLayoutTransform);
     }

     /**
@@ -607,7 +652,7 @@
      */
     public function getPreferredBoundsHeight(postLayoutTransform:Boolean = true):Number
     {
-        return transformHeightForLayout(width, height, postLayoutTransform);
+        return transformHeightForLayout(preferredWidth, preferredHeight, postLayoutTransform);
     }

     /**
@@ -625,17 +670,9 @@
             m = transform.matrix;
         if (!m)
             return x;
-
-        var newSize:Point = MatrixUtil.fitBounds(width, height, m,
-                                                 this.width,
-                                                 this.height,
-                                                 this.width, this.height,
-                                                 this.width, this.height);
-        if (!newSize)
-            newSize = new Point(this.width, this.height);
-
+
         var topLeft:Point = new Point(0, 0);
-        MatrixUtil.transformBounds(newSize, m, topLeft);
+        MatrixUtil.transformBounds(new Point(preferredWidth, preferredHeight), m, topLeft);
         return topLeft.x;
     }

@@ -655,16 +692,8 @@
         if (!m)
             return y;

-        var newSize:Point = MatrixUtil.fitBounds(width, height, m,
-                                                 this.width,
-                                                 this.height,
-                                                 this.width, this.height,
-                                                 this.width, this.height);
-        if (!newSize)
-            newSize = new Point(this.width, this.height);
-
         var topLeft:Point = new Point(0, 0);
-        MatrixUtil.transformBounds(newSize, m, topLeft);
+        MatrixUtil.transformBounds(new Point(preferredWidth, preferredHeight), m, topLeft);
         return topLeft.y;
     }

@@ -710,44 +739,25 @@
                                         height:Number,
                                         postLayoutTransform:Boolean = true):void
     {
-        // Calculate the width and height pre-transform:
-        var m:Matrix;
         if (postLayoutTransform)
-            m = transform.matrix;
-        if (!m)
         {
-            if (isNaN(width))
-                width = this.width;
-            if (isNaN(height))
-                height = this.height;
+            // If the size is specified post-transform,
+            // then always snap to the preferredSize.
+            width = preferredWidth;
+            height = preferredHeight;
         }
         else
         {
-            var newSize:Point = MatrixUtil.fitBounds(width, height, m,
-                                                     this.width,
-                                                     this.height,
-                                                     this.width, this.height,
-                                                     this.width, this.height);
-
-            if (newSize)
-            {
-                width = newSize.x;
-                height = newSize.y;
-            }
-            else
-            {
-                width = this.width;
-                height = this.height;
-            }
+            if (isNaN(width))
+                width = preferredWidth;
+            if (isNaN(height))
+                height = preferredHeight;
         }

-        if (this.width != width || this.height != height)
-        {
-            super.width = width;
-            super.height = height;
-        }
-    }
-
+        _layoutWidth = width;
+        _layoutHeight = height;
+    }
+
     /**
      *  @inheritDoc
      */


Transferred from the Adobe Open Source Subversion Repository

Revision: 19291
Author:   klin@adobe.com
Date:     2010-12-10T21:58:08.665321Z

Log Message:
-----------
Removing excess ASDoc for verticalAlign and horizontalAlign.

QE notes: No
Doc notes: No
Bugs: SDK-28586
Reviewer: Carol
Tests run: checkintests
Is noteworthy for integration: No

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

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

--- frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
+++ frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
@@ -863,15 +863,6 @@
      *  The horizontal alignment of the content relative to the container's width.
      *  If the value is "left", "right", or "center" then the
      *  layout element is aligned relative to the container's contentWidth property.
-     *
-     *
If the value is "contentJustify", then the layout element's actual
-     *  width is set to the contentWidth of the container.
-     *  The contentWidth of the container is the width of the largest layout element.
-     *  If all layout elements are smaller than the width of the container,
-     *  then set the width of all layout elements to the width of the container.

-     *
-     *
If the value is "justify" then the layout element's actual width
-     *  is set to the container's width.

      *
      *
This property has no effect when clipAndEnableScrolling is true
      *  and the contentWidth is greater than the container's width.


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 9416
Author:   aharui@adobe.com
Date:     2009-08-20T02:15:38.365755Z

Log Message:
-----------
Revert 9399.  The prototypes broke mustella states tests.  Will try again later.

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="D">/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" copyfrom-path="/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/IDeferredContentOwner.as" copyfrom-rev="9398" action="A">/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="D">/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="D">/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="D">/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@1267524 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/containers/Accordion.as
+++ frameworks/projects/mx/src/mx/containers/Accordion.as
@@ -13,13 +13,14 @@
 {

 import flash.display.DisplayObject;
+import flash.display.DisplayObjectContainer;
 import flash.events.Event;
 import flash.events.FocusEvent;
 import flash.events.KeyboardEvent;
 import flash.events.MouseEvent;
 import flash.geom.Rectangle;
 import flash.ui.Keyboard;
-
+import flash.utils.getTimer;
 import mx.automation.IAutomationObject;
 import mx.containers.accordionClasses.AccordionHeader;
 import mx.controls.Button;
@@ -30,10 +31,10 @@
 import mx.core.EdgeMetrics;
 import mx.core.FlexVersion;
 import mx.core.IDataRenderer;
-import mx.core.IDeferredContentOwner;
 import mx.core.IFactory;
+import mx.managers.IFocusManagerComponent;
+import mx.managers.IHistoryManagerClient;
 import mx.core.IInvalidating;
-import mx.core.INavigatorContent;
 import mx.core.IUIComponent;
 import mx.core.ScrollPolicy;
 import mx.core.UIComponent;
@@ -45,10 +46,9 @@
 import mx.events.IndexChangedEvent;
 import mx.geom.RoundedRectangle;
 import mx.managers.HistoryManager;
-import mx.managers.IFocusManagerComponent;
-import mx.managers.IHistoryManagerClient;
+import mx.styles.StyleManager;
 import mx.styles.CSSStyleDeclaration;
-import mx.styles.StyleManager;
+import mx.styles.StyleProxy;

 use namespace mx_internal;

@@ -962,18 +962,18 @@
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-    public function get selectedChild():INavigatorContent
+    public function get selectedChild():Container
     {
         if (selectedIndex == -1)
             return null;

-        return INavigatorContent(getChildAt(selectedIndex));
-    }
-
-    /**
-     *  @private
-     */
-    public function set selectedChild(value:INavigatorContent):void
+        return Container(getChildAt(selectedIndex));
+    }
+
+    /**
+     *  @private
+     */
+    public function set selectedChild(value:Container):void
     {
         var newIndex:int = getChildIndex(DisplayObject(value));

@@ -1305,7 +1305,7 @@
         // cache until we're fully initialized.  (bug 102639)
         // This check was moved from the beginning of this function to
         // here to fix bugs 103665/104213.
-        if (selectedChild && selectedChild.deferredContentCreated)
+        if (selectedChild && Container(selectedChild).numChildrenCreated == -1)
             return;

         // Don't remember sizes if we don't have any children
@@ -1450,7 +1450,7 @@
             var n:int = numChildren;
             for (var i:int = 0; i < n; i++)
             {
-                IDeferredContentOwner(getChildAt(i)).createDeferredContent();
+                Container(getChildAt(i)).createComponentsFromDescriptors();
             }
         }
     }
@@ -1572,7 +1572,7 @@
         overlayColor = color;
         overlayTargetArea = targetArea;

-        if (selectedChild && selectedChild.deferredContentCreated == false) // No children have been created
+        if (selectedChild && selectedChild.numChildrenCreated == -1) // No children have been created
         {
             // Wait for the childrenCreated event before creating the overlay
             selectedChild.addEventListener(FlexEvent.INITIALIZE,
@@ -1752,20 +1752,20 @@

         IDataRenderer(header).data = content;

-        if (content is INavigatorContent)
-        {
-            var contentContainer:INavigatorContent = INavigatorContent(content);
+        if (content is Container)
+        {
+            var contentContainer:Container = Container(content);

             header.label = contentContainer.label;
             if (contentContainer.icon)
                 header.setStyle("icon", contentContainer.icon);

             // If the child has a toolTip, transfer it to the header.
-            var toolTip:String = (contentContainer as UIComponent).toolTip;
+            var toolTip:String = contentContainer.toolTip;
             if (toolTip && toolTip != "")
             {
                 header.toolTip = toolTip;
-                (contentContainer as UIComponent).toolTip = null;
+                contentContainer.toolTip = null;
             }
         }

@@ -1841,7 +1841,7 @@
         var header:Button = Button(event.currentTarget);
         var oldIndex:int = selectedIndex;
         // content is placed onto the button so we have to access it via []
-        selectedChild = INavigatorContent(IDataRenderer(header).data);
+        selectedChild = Container(IDataRenderer(header).data);
         var newIndex:int = selectedIndex;
         if (oldIndex != newIndex)
             dispatchChangeEvent(oldIndex, newIndex, event);
@@ -1937,13 +1937,13 @@
         {
             // Need to set the new index to be visible here
             // in order for effects to work.
-            IUIComponent(getChildAt(newIndex)).setVisible(true);
+            Container(getChildAt(newIndex)).setVisible(true);

             // Now that the effects have been triggered, we can hide the
             // current view until it is properly sized and positioned below.
-            IUIComponent(getChildAt(newIndex)).setVisible(false, true);
+            Container(getChildAt(newIndex)).setVisible(false, true);
             if (oldIndex != -1)
-                IUIComponent(getChildAt(oldIndex)).setVisible(false);
+                Container(getChildAt(oldIndex)).setVisible(false);

             instantiateChild(selectedChild);
         }
@@ -1959,7 +1959,7 @@
     /**
      *  @private
      */
-    private function instantiateChild(child:INavigatorContent):void
+    private function instantiateChild(child:Container):void
     {
         // fix for bug#137430
         // when the selectedChild index is -1 (invalid value due to any reason)
@@ -1970,8 +1970,8 @@

         // Performance optimization: don't call createComponents if we know
         // that createComponents has already been called.
-        if (child && child.deferredContentCreated == false)
-            child.createDeferredContent();
+        if (child && child.numChildrenCreated == -1)
+            child.createComponentsFromDescriptors();

         // Do the initial measurement/layout pass for the newly-instantiated
         // descendants.
@@ -2028,14 +2028,14 @@
         // EffectManager might try to play another effect that animates the same
         // properties.
         if (oldSelectedIndex != -1)
-            IUIComponent(getChildAt(oldSelectedIndex)).tweeningProperties = ["x", "y", "width", "height"];
-        IUIComponent(getChildAt(newSelectedIndex)).tweeningProperties = ["x", "y", "width", "height"];
+            Container(getChildAt(oldSelectedIndex)).tweeningProperties = ["x", "y", "width", "height"];
+        Container(getChildAt(newSelectedIndex)).tweeningProperties = ["x", "y", "width", "height"];

         // If the content of the new child hasn't been created yet, set the new child
         // to the content width/height. This way any background color will show up
         // properly during the animation.
-        var newSelectedChild:IDeferredContentOwner = IDeferredContentOwner(getChildAt(newSelectedIndex));
-        if (newSelectedChild.deferredContentCreated == false)
+        var newSelectedChild:Container = Container(getChildAt(newSelectedIndex));
+        if (newSelectedChild.numChildren == 0)
         {
             var paddingLeft:Number = getStyle("paddingLeft");
             var contentX:Number = borderMetrics.left + (paddingLeft > 0 ? paddingLeft : 0);
@@ -2085,7 +2085,7 @@
         for (var i:int = 0; i < n; i++)
         {
             var header:Button = getHeaderAt(i);
-            var content:UIComponent = UIComponent(getChildAt(i));
+            var content:Container = Container(getChildAt(i));

             header.$y = y;
             y += header.height;
@@ -2130,7 +2130,7 @@
         var localContentHeight:Number = calcContentHeight();

         var y:Number = vm.top;
-        var content:UIComponent;
+        var content:Container;

         var n:int = numChildren;
         for (var i:int = 0; i < n; i++)
@@ -2141,7 +2141,7 @@

             if (i == selectedIndex)
             {
-                content = UIComponent(getChildAt(i));
+                content = Container(getChildAt(i));
                 content.cacheAsBitmap = false;
                 content.scrollRect = null;
                 content.visible = true;
@@ -2152,7 +2152,7 @@

         if (oldSelectedIndex != -1)
         {
-            content = UIComponent(getChildAt(oldSelectedIndex));
+            content = Container(getChildAt(oldSelectedIndex));
             content.cacheAsBitmap = false;
             content.scrollRect = null;
             content.visible = false;
@@ -2170,7 +2170,7 @@

         UIComponent.resumeBackgroundProcessing();

-        UIComponent(getChildAt(selectedIndex)).tweeningProperties = null;
+        Container(getChildAt(selectedIndex)).tweeningProperties = null;

         // If we interrupted a Dissolve effect, restart it here
         if (currentDissolveEffect)
@@ -2425,7 +2425,7 @@

                 // if something's selected, instantiate it
                 if (newIndex != -1)
-                    instantiateChild(INavigatorContent(getChildAt(newIndex)));
+                    instantiateChild(Container(getChildAt(newIndex)));
             }
             else
             {
@@ -2435,7 +2435,7 @@
                 // newIndex + 1 because currently that's what the index
                 // of the child is (SDK-12622) since this one isn't
                 // actually removed from the display list yet
-                instantiateChild(INavigatorContent(getChildAt(newIndex+1)));
+                instantiateChild(Container(getChildAt(newIndex+1)));
             }

             // Select the new selected index header.


Transferred from the Adobe Open Source Subversion Repository

Revision: 12018
Author:   aharui@adobe.com
Date:     2009-11-19T23:03:56.078443Z

Log Message:
-----------
Workaround focus issue in ColorPicker.

QE Notes: None
Doc Notes: None
Bugs: SDK-23835
Reviewer: Corey
API Change: No
Is noteworthy for integration: No
tests: checkintests mustella/components/ColorPicker

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as

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

--- frameworks/projects/mx/src/mx/controls/ColorPicker.as
+++ frameworks/projects/mx/src/mx/controls/ColorPicker.as
@@ -1613,7 +1613,7 @@
         UIComponent.resumeBackgroundProcessing();

         if (showingDropdown && showTextField)
-            dropdownSwatch.setFocus();
+            dropdownSwatch.callLater(dropdownSwatch.setFocus);
         else
             setFocus();


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

--- frameworks/projects/mx/src/mx/controls/RadioButton.as
+++ frameworks/projects/mx/src/mx/controls/RadioButton.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2003-2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.controls
 {


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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 11271
Author:   cframpto@adobe.com
Date:     2009-10-29T18:42:36.549688Z

Log Message:
-----------
Added missing return on a getter function.  I guess if a function returns type * you don't get a compile error about a missing return.

QE notes:
Doc notes:
Bugs: SDK-23622
Reviewer: Gordon
Tests run: checkintests don't test this so I didn't run them
Is noteworthy for integration: no

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/FTETextField.as

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

--- frameworks/projects/spark/src/mx/core/FTETextField.as
+++ frameworks/projects/spark/src/mx/core/FTETextField.as
@@ -3136,7 +3136,7 @@

 	public function get color():*
 	{
-		textField._defaultTextFormat.color;
+		return textField._defaultTextFormat.color;
 	}

 	public function get columnCount():*


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

--- frameworks/projects/spark/src/spark/core/IViewport.as
+++ frameworks/projects/spark/src/spark/core/IViewport.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2008 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////

 package spark.core
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 12542
Author:   cframpto@adobe.com
Date:     2009-12-04T18:38:32.745057Z

Log Message:
-----------
When adding a mask to the display list need to validate it and all its children.  Previously the children were not validated and their display list was updated before properties were committed or measure was done.  RichText was not set up to handle this.

QE notes:
Doc notes:
Bugs: SDK-24511
Reviewer:  Evtim, Deepa
Tests run: checkintests, fxg, primitives, Group
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/utils/MaskUtil.as</path>

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

--- frameworks/projects/spark/src/spark/utils/MaskUtil.as
+++ frameworks/projects/spark/src/spark/utils/MaskUtil.as
@@ -17,6 +17,7 @@
 import flash.filters.ShaderFilter;

 import mx.core.UIComponent;
+import mx.core.UIComponentGlobals;
 import mx.core.mx_internal;
 import mx.graphics.shaderClasses.LuminosityMaskShader;
 import mx.graphics.shaderClasses.LuminosityShader;
@@ -108,9 +109,9 @@
                     UIComponent(parent).childAdded(maskComp);
                 }

-                // Size the mask so that it actually renders
-                maskComp.validateProperties();
-                maskComp.validateSize();
+                // Size the mask including its children so that it actually
+                // renders.
+                UIComponentGlobals.layoutManager.validateClient(maskComp, true);

                 // Call this to force the mask to complete initialization
                 maskComp.invalidateDisplayList();


Remove unnecessary symbol to XML conversion.

--- src/com/esri/viewer/managers/ConfigManager.as
+++ src/com/esri/viewer/managers/ConfigManager.as
@@ -32,11 +32,6 @@
 import com.esri.ags.layers.supportClasses.Field;
 import com.esri.ags.layers.supportClasses.LOD;
 import com.esri.ags.portal.WebMapUtil;
-import com.esri.ags.symbols.PictureMarkerSymbol;
-import com.esri.ags.symbols.SimpleFillSymbol;
-import com.esri.ags.symbols.SimpleLineSymbol;
-import com.esri.ags.symbols.SimpleMarkerSymbol;
-import com.esri.ags.symbols.Symbol;
 import com.esri.ags.tasks.GeometryServiceSingleton;
 import com.esri.ags.virtualearth.VETiledLayer;
 import com.esri.viewer.AppEvent;
@@ -1148,18 +1143,6 @@
             {
                 lyrXML.@serviceurl = geoRSSLayer.serviceURL;
             }
-            if (geoRSSLayer.pointSymbol)
-            {
-                lyrXML.appendChild(getPointSymbolXML(geoRSSLayer.pointSymbol));
-            }
-            if (geoRSSLayer.polylineSymbol)
-            {
-                lyrXML.appendChild(getLineSymbolXML(geoRSSLayer.polylineSymbol));
-            }
-            if (geoRSSLayer.polygonSymbol)
-            {
-                lyrXML.appendChild(getPolygonSymbolXML(geoRSSLayer.polygonSymbol));
-            }
         }
         else if (layer is KMLLayer)
         {
@@ -1236,90 +1219,6 @@
         return lyrXML;
     }

-    private function getPointSymbolXML(pointSymbol:Symbol):XML
-    {
-        var pointSymbolXML:XML;
-
-        if (pointSymbol)
-        {
-            if (pointSymbol is SimpleMarkerSymbol)
-            {
-                var sms:SimpleMarkerSymbol = pointSymbol as SimpleMarkerSymbol;
-
-                pointSymbolXML = <simplemarkersymbol
-                        alpha={sms.alpha}
-                        color={sms.color}
-                        size={sms.size}
-                        style={sms.style}/>;
-
-                if (sms.outline)
-                {
-                    pointSymbolXML.appendChild(<outline
-                                                   color={sms.outline.color}
-                                                   width={sms.outline.width}
-                                                   style={sms.outline.style}/>);
-                }
-            }
-            else if (pointSymbol is PictureMarkerSymbol)
-            {
-                var pms:PictureMarkerSymbol = pointSymbol as PictureMarkerSymbol;
-
-                pointSymbolXML = <picturemarkersymbol
-                        url={pms.source}
-                        height={pms.height}
-                        width={pms.width}
-                        xoffset={pms.xoffset}
-                        yoffset={pms.yoffset}
-                        angle={pms.angle}/>;
-            }
-        }
-
-        return pointSymbolXML;
-    }
-
-    private function getLineSymbolXML(polylineSymbol:Symbol):XML
-    {
-        var polylineSymbolXML:XML;
-
-        if (polylineSymbol)
-        {
-            var sls:SimpleLineSymbol = polylineSymbol as SimpleLineSymbol;
-
-            polylineSymbolXML = <simplelinesymbol
-                    alpha={sls.alpha}
-                    color={sls.color}
-                    width={sls.width}
-                    style={sls.style}/>;
-        }
-
-        return polylineSymbolXML;
-    }
-
-    private function getPolygonSymbolXML(polygonSymbol:Symbol):XML
-    {
-        var polygonSymbolXML:XML;
-
-        if (polygonSymbol)
-        {
-            var sfs:SimpleFillSymbol = polygonSymbol as SimpleFillSymbol;
-
-            polygonSymbolXML = <simplefillsymbol
-                    alpha={sfs.alpha}
-                    color={sfs.color}
-                    style={sfs.style}/>;
-
-            if (sfs.outline)
-            {
-                polygonSymbolXML.appendChild(<outline
-                                                 color={sfs.outline.color}
-                                                 width={sfs.outline.width}
-                                                 style={sfs.outline.style}/>);
-            }
-        }
-
-        return polygonSymbolXML;
-    }
-
     private function appendPortalBasemaps(portalURL:String):void
     {
         var basemapAppender:PortalBasemapAppender = new PortalBasemapAppender(portalURL, configData);


Transferred from the Adobe Open Source Subversion Repository

Revision: 16545
Author:   chiedozi@adobe.com
Date:     2010-06-14T03:42:53.505665Z

Log Message:
-----------
Added MobileApplication, ViewNavigator, PersistenceManager and ViewTransition prototypes to mobile components swc.

mobilecomponents and mobiletheme eclipse projects now link to airglobal.swc instead of playerglobal.swc so that MobileApplication can respond to StageOrientation and NativeApplication events.

QE notes:
Doc notes:
Bugs:
Reviewer:
Tests run: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/manifest.xml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/View.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/.actionScriptProperties</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/core/managers/PersistenceManager.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/ViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/MobileThemeClasses.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/core/managers/IPersistenceManager.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/IViewTransition.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileApplication.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewData.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/.actionScriptProperties</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/SlideViewTransition.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorSection.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/events/ViewNavigatorEvent.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/MobileApplicationSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorSkin.as
@@ -0,0 +1,88 @@
+package spark.skins.mobile
+{
+    import spark.components.ActionBar;
+    import spark.components.ButtonBar;
+    import spark.components.Group;
+    import spark.components.ViewNavigator;
+
+    public class ViewNavigatorSkin extends SliderSkin
+    {
+        //--------------------------------------------------------------------------
+        //
+        //  Constructor
+        //
+        //--------------------------------------------------------------------------
+        public function ViewNavigatorSkin()
+        {
+            super();
+        }
+
+        //--------------------------------------------------------------------------
+        //
+        //  Variables
+        //
+        //--------------------------------------------------------------------------
+        public var hostComponent:ViewNavigator;
+        public var contentGroup:Group;
+        public var actionBar:ActionBar;
+        public var tabBar:ButtonBar;
+
+        //--------------------------------------------------------------------------
+        //
+        // Methods
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         *
+         */
+        override protected function createChildren():void
+        {
+            contentGroup = new Group();
+
+            tabBar = new ButtonBar();
+            tabBar.requireSelection = true;
+            tabBar.height = 40;
+
+            actionBar = new ActionBar();
+
+            addChild(contentGroup);
+            addChild(actionBar);
+            addChild(tabBar);
+
+            actionBar.dataProvider = hostComponent;
+            tabBar.dataProvider = hostComponent;
+        }
+
+        /**
+         *
+         */
+        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+        {
+            var top:Number = 0;
+            var bottom:Number = unscaledHeight;
+
+            if (tabBar.includeInLayout)
+            {
+                var tabBarHeight:Number = tabBar.getExplicitOrMeasuredHeight();
+                tabBar.setLayoutBoundsSize(unscaledWidth, tabBarHeight);
+                tabBar.setLayoutBoundsPosition(0, top);
+
+                top += tabBarHeight;
+            }
+
+            if (actionBar.includeInLayout)
+            {
+                var actionBarHeight:Number = actionBar.getExplicitOrMeasuredHeight();
+
+                actionBar.setLayoutBoundsSize(unscaledWidth, actionBarHeight);
+                actionBar.setLayoutBoundsPosition(0, top);
+
+                top += actionBarHeight;
+            }
+
+            contentGroup.setLayoutBoundsPosition(0, top);
+            contentGroup.setLayoutBoundsSize(unscaledWidth, bottom - top);
+        }
+    }
+}


Adding explosion sound to death

Adding explosion sound to death

--- src/heartattacks/doodads/player/DyingState.as
+++ src/heartattacks/doodads/player/DyingState.as
@@ -3,6 +3,7 @@
 	import heartattacks.doodads.states.IState;
 	import net.flashpunk.graphics.Spritemap;
 	import com.greensock.TweenLite;
+	import heartattacks.doodads.Music;
 	/**
 	 * ...
 	 * @author The Heart Attacks
@@ -20,6 +21,7 @@
 		{
 			spritemap.play("dying");
 			TweenLite.to(spritemap, 1, { alpha: 0, delay: 1 } );
+			Music.explosion.play();
 		}

 		public function update(spritemap:Spritemap):void


Transferred from the Adobe Open Source Subversion Repository

Revision: 22608
Author:   smgilson@adobe.com
Date:     2011-09-16T17:19:03.985309Z

Log Message:
-----------
- Add ViewMenu example, add image to ViewMenu.as

- fix typos in ASDoc comments

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

Modified Paths:
--------------
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/asdoc/en_US/spark/components/examples/ViewMenuExampleHome.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/View.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/asdoc/en_US/spark/components/examples/ViewMenuExample.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ViewMenuItem.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/BusyIndicator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ViewMenu.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SplitViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/Callout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ToggleSwitch.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/ToggleSwitch.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ToggleSwitch.as
@@ -112,7 +112,7 @@
  *  By default, the label OFF corresponds to the unselected position and ON
  *  corresponds to the selected position.

  *
- *
The following images shows a ToggleSwitch control.
+ *
The following image shows a ToggleSwitch control.
  *  The labels below the control show the current switch label and position:

  *
  *


Transferred from the Adobe Open Source Subversion Repository

Revision: 19231
Author:   jszeto@adobe.com
Date:     2010-12-09T19:25:51.943016Z

Log Message:
-----------
Mobile Skin Fixes

Merging in revisions 18989-19158 from hero_skin_sandbox.

The following component skins have been updated and 320 DPI skins added:

Button
CheckBox
RadioButton
TextInput
TextArea
ActionBar
HSlider

Updating MobileSkins test project

QE notes: baseline regen
Doc notes: none
Bugs: none
Reviewer: Jason San Jose, Tom Krakit
Tests run: full cyclone
Is noteworthy for integration: yes, updated skins!

Modified Paths:
--------------
129 paths were modified

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/RadioButtonSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/RadioButtonSkin.as
@@ -19,15 +19,17 @@

 import spark.skins.mobile.supportClasses.SelectableButtonSkinBase;
 import spark.skins.mobile160.assets.RadioButton_down;
-import spark.skins.mobile160.assets.RadioButton_downSelected;
 import spark.skins.mobile160.assets.RadioButton_symbol;
+import spark.skins.mobile160.assets.RadioButton_symbolSelected;
 import spark.skins.mobile160.assets.RadioButton_up;
-import spark.skins.mobile160.assets.RadioButton_upSelected;
 import spark.skins.mobile240.assets.RadioButton_down;
-import spark.skins.mobile240.assets.RadioButton_downSelected;
 import spark.skins.mobile240.assets.RadioButton_symbol;
+import spark.skins.mobile240.assets.RadioButton_symbolSelected;
 import spark.skins.mobile240.assets.RadioButton_up;
-import spark.skins.mobile240.assets.RadioButton_upSelected;
+import spark.skins.mobile320.assets.RadioButton_down;
+import spark.skins.mobile320.assets.RadioButton_symbol;
+import spark.skins.mobile320.assets.RadioButton_symbolSelected;
+import spark.skins.mobile320.assets.RadioButton_up;

 /**
  *  Actionscript based skin for RadioButton on mobile applications.
@@ -59,40 +61,57 @@

         useChromeColor = true;

+        layoutPaddingLeft = 0;
+        layoutPaddingRight = 0;
+        layoutPaddingTop = 0;
+        layoutPaddingBottom = 0;
+
         switch (authorDensity)
         {
+            case DeviceDensity.PPI_320:
+            {
+                upIconClass = spark.skins.mobile320.assets.RadioButton_up;
+                upSelectedIconClass = spark.skins.mobile320.assets.RadioButton_up;
+                downIconClass = spark.skins.mobile320.assets.RadioButton_down;
+                downSelectedIconClass = spark.skins.mobile320.assets.RadioButton_down;
+                upSymbolIconClass = spark.skins.mobile320.assets.RadioButton_symbol;
+                downSymbolIconClass = spark.skins.mobile320.assets.RadioButton_symbol;
+                upSymbolIconSelectedClass = spark.skins.mobile320.assets.RadioButton_symbolSelected;
+                downSymbolIconSelectedClass = spark.skins.mobile320.assets.RadioButton_symbolSelected;
+
+                layoutGap = 20;
+                layoutMeasuredWidth = 64;
+
+                break;
+            }
             case DeviceDensity.PPI_240:
             {
                 upIconClass = spark.skins.mobile240.assets.RadioButton_up;
-                upSelectedIconClass = spark.skins.mobile240.assets.RadioButton_upSelected;
+                upSelectedIconClass = spark.skins.mobile240.assets.RadioButton_up;
                 downIconClass = spark.skins.mobile240.assets.RadioButton_down;
-                downSelectedIconClass = spark.skins.mobile240.assets.RadioButton_downSelected;
-                symbolIconClass = spark.skins.mobile240.assets.RadioButton_symbol;
+                downSelectedIconClass = spark.skins.mobile240.assets.RadioButton_down;
+                upSymbolIconClass = spark.skins.mobile240.assets.RadioButton_symbol;
+                downSymbolIconClass = spark.skins.mobile240.assets.RadioButton_symbol;
+                upSymbolIconSelectedClass = spark.skins.mobile240.assets.RadioButton_symbolSelected;
+                downSymbolIconSelectedClass = spark.skins.mobile240.assets.RadioButton_symbolSelected;

                 layoutGap = 15;
-                layoutPaddingLeft = 15;
-                layoutPaddingRight = 15;
-                layoutPaddingTop = 15;
-                layoutPaddingBottom = 15;
                 layoutMeasuredWidth = 48;

                 break;
             }
             default:
             {
-                // TODO (jasonsj) 160ppi spec
-                // default PPI160
                 upIconClass = spark.skins.mobile160.assets.RadioButton_up;
-                upSelectedIconClass = spark.skins.mobile160.assets.RadioButton_upSelected;
+                upSelectedIconClass = spark.skins.mobile160.assets.RadioButton_up;
                 downIconClass = spark.skins.mobile160.assets.RadioButton_down;
-                downSelectedIconClass = spark.skins.mobile160.assets.RadioButton_downSelected;
-                symbolIconClass = spark.skins.mobile160.assets.RadioButton_symbol;
+                downSelectedIconClass = spark.skins.mobile160.assets.RadioButton_down;
+                upSymbolIconClass = spark.skins.mobile160.assets.RadioButton_symbol;
+                downSymbolIconClass = spark.skins.mobile160.assets.RadioButton_symbol;
+                upSymbolIconSelectedClass = spark.skins.mobile160.assets.RadioButton_symbolSelected;
+                downSymbolIconSelectedClass = spark.skins.mobile160.assets.RadioButton_symbolSelected;

-                layoutGap = 15;
-                layoutPaddingLeft = 15;
-                layoutPaddingRight = 15;
-                layoutPaddingTop = 15;
-                layoutPaddingBottom = 15;
+                layoutGap = 10;
                 layoutMeasuredWidth = 32;

                 break;


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
@@ -68,6 +68,8 @@
  *  @productversion Flex 4
  */
 [Event(name="caretChange", type="spark.events.IndexChangeEvent")]
+
+[AccessibilityClass(implementation="mx.accessibility.ListBaseAccImpl")]

 /**
  *  The ListBase class is the base class for all components that support
@@ -107,6 +109,18 @@

     //--------------------------------------------------------------------------
     //
+    //  Class mixins
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  Placeholder for mixin by ListBaseAccImpl.
+     */
+    mx_internal static var createAccessibilityImplementation:Function;
+
+    //--------------------------------------------------------------------------
+    //
     //  Constants
     //
     //--------------------------------------------------------------------------
@@ -572,6 +586,15 @@
     //  Overridden properties: UIComponent
     //
     //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override protected function initializeAccessibility():void
+    {
+        if (ListBase.createAccessibilityImplementation != null)
+            ListBase.createAccessibilityImplementation(this);
+    }

     //----------------------------------
     //  baselinePosition


Transferred from the Adobe Open Source Subversion Repository

Revision: 4920
Author:   gosmith@adobe.com
Date:     2009-02-10T21:58:56.126598Z

Log Message:
-----------
ASDoc changes: Don't doc various overrides in TextGraphicElement, TextBox, and TextGraphic. Do doc baselinePosition in GraphicElement.

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Jason

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

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

--- frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
@@ -338,7 +338,7 @@
     //--------------------------------------------------------------------------

     /**
-     *  @inheritDoc
+     *  @private
      */
     override protected function updateDisplayList(unscaledWidth:Number,
                                                   unscaledHeight:Number):void


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

--- frameworks/projects/advancedgrids/src/mx/olap/aggregators/MaxAggregator.as
+++ frameworks/projects/advancedgrids/src/mx/olap/aggregators/MaxAggregator.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.olap.aggregators


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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


Fixes FLEX-32887

Fixes FLEX-32887

--- frameworks/projects/charts/src/mx/charts/chartClasses/GraphicsUtilities.as
+++ frameworks/projects/charts/src/mx/charts/chartClasses/GraphicsUtilities.as
@@ -330,7 +330,7 @@

 			// Check for coincident points at the head of the list.
 			// We'll skip over any of those
-			while (start != end)
+			while (start != end && ((start + incr) != end))
 			{
 				if (pts[start + incr][hProp] != pts[start][hProp] ||
 					pts[start + incr][vProp] != pts[start][vProp])


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 4958
Author:   rfrishbe@adobe.com
Date:     2009-02-13T23:07:46.243121Z

Log Message:
-----------
Change the initialization sequence of FxComponent and Group.  Basically now children (including the skin) should get created at createChildren() time and follow the correct lifecycle pattern.  Unfortunately, this change got mingled in with all my PARB changes, so I'm submitting a bunch of PARB changes for Group, DataGroup, FxContainer, and FxDataContainer, outlined below:

1.     New event classes/names for Group/FxContainer and DataGroup ("elementAdd" and "elementRemove" event of type ElementExistenceEvent for Group/FxContainer and "rendererAdd" and "rendererRemove" event of type RendererExistenceEvent for DataGroup). It was just one event class of ItemExistenceChangedEvent before.
2.     LayoutBase.clipContent->clipAndEnableScrolling (same with IViewport.clipContent and GroupBase.clipContent)
3.     GroupBase.getLayoutELementAt()->getElementAt()
4.     GroupBase.numLayoutElements -> numElements.
5.     LayoutBase.virtualLayout -> useVirtualLayout
6.     ScrollUnit constants are now changed to be uints instead of typed as ScrollUnit.  This means the signature for getHorizontalScrollPositionDelta(unit:ScrollUnit):Number has changed to getHorizontalScrollPositionDelta(scrollUnit:uint):Number (and ditto for getVerticalScrollPositionDelta())
7.  DataGroup.getRendererForItemAt() -> getElementAt()
8.  DataGroup.getItemIndexForRenderer() -> getElementIndex()

Other changes:
 - Change IVisualElement interface so that it's smaller now.  It also extends ILayoutElement now.  The properties removed from IVisualElement are: rotation, rotationX, rotationY, rotationZ, transformX, transformY, offsets, x, y, z, scaleX, scaleY, scaleZ, explicitWidth, explicitMinWidth, explicitMaxWidth, explicitHeight, explicitMinHeight, explicitMaxHeight)
-  Fix in DataGroup so we don’t remove/add elements if we’re gonna do it later anyways.  I also need to do some other work in here around cleaning up of renderers.
- AddItems fix around handling IVisualElementContainers more effeciently
- get mxmlContent now returns a copy of the Array rather than the one we're using internally
- Had to update mustella since there was special case logic for dealing with getLayoutElementAt().  I added this logic for getElementAt(), which replaces that method.

QE Notes: Thanks for changing all the tests and working on the cyclone
Doc Notes: Made some ASDoc changes to some core classes to move the comments into the interfaces.  I did update the comments a bit as well.
Bugs: SDK-18115, SDK-19004
Reviewer: Jason, Glenn, Hans for initialization sequence change and Hans for all PARB changes
tests: checkintests, all mustella tests

Modified Paths:
--------------
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/ItemExistenceChangedEvent.as" copyfrom-rev="4812" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/ElementExistenceEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxScroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/layouts/WheelLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxHScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/core/IViewport.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/VerticalLayout.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/RendererExistenceEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutBase.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/ItemExistenceChangedEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/core/ScrollUnit.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/flex4/src/mx/components/FxVScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/states/AddItems.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/mustella/mustella.swc</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>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/TextView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxContainer.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as
@@ -19,12 +19,11 @@
 import mx.core.IFactory;
 import mx.core.IViewport;
 import mx.core.IVisualElement;
-import mx.core.ScrollUnit;
 import mx.core.UIComponent;
 import mx.core.mx_internal;
 import mx.events.CollectionEvent;
 import mx.events.FlexEvent;
-import mx.events.ItemExistenceChangedEvent;
+import mx.events.RendererExistenceEvent;
 import mx.events.PropertyChangeEvent;
 import mx.events.PropertyChangeEventKind;
 import mx.graphics.Graphic;
@@ -193,7 +192,7 @@
     /**
      *  @private
      *
-     *  Three properties are delegated to the layout: clipContent,
+     *  Three properties are delegated to the layout: clipAndEnableScrolling,
      *  verticalScrollPosition, horizontalScrollPosition.
      *  If the layout is reset, we copy the properties from the old
      *  layout to the new one.   If the new layout is null, then we
@@ -206,7 +205,7 @@

         if (value)
         {
-            value.clipContent = clipContent;
+            value.clipAndEnableScrolling = clipAndEnableScrolling;
             value.verticalScrollPosition = verticalScrollPosition;
             value.horizontalScrollPosition = horizontalScrollPosition;
             _layoutProperties = null;
@@ -216,7 +215,7 @@
             _layoutProperties = {
                 verticalScrollPosition: _layout.verticalScrollPosition,
                 horizontalScrollPosition: _layout.horizontalScrollPosition,
-                clipContent: _layout.clipContent
+                clipAndEnableScrolling: _layout.clipAndEnableScrolling
             };
         }

@@ -285,28 +284,28 @@
     }

     //----------------------------------
-    //  clipContent
-    //----------------------------------
-
-    /**
-     *  @copy mx.core.IViewport#clipContent
-     */
-    public function get clipContent():Boolean
-    {
-        return (_layout) ? _layout.clipContent : _layoutProperties.clipContent;
-    }
-
-    /**
-     *  @private
-     */
-    public function set clipContent(value:Boolean):void
+    //  clipAndEnableScrolling
+    //----------------------------------
+
+    /**
+     *  @copy mx.core.IViewport#clipAndEnableScrolling
+     */
+    public function get clipAndEnableScrolling():Boolean
+    {
+        return (_layout) ? _layout.clipAndEnableScrolling : _layoutProperties.clipAndEnableScrolling;
+    }
+
+    /**
+     *  @private
+     */
+    public function set clipAndEnableScrolling(value:Boolean):void
     {
         if (_layout)
-            _layout.clipContent = value;
+            _layout.clipAndEnableScrolling = value;
         else
-            _layoutProperties.clipContent = value;
-
-        // Clip content affects measured minimum size
+            _layoutProperties.clipAndEnableScrolling = value;
+
+        // clipAndEnableScrolling affects measured minimum size
         invalidateSize();
     }

@@ -629,7 +628,7 @@

             // Special case: If the group clips content, or resizeMode is "scale"
             // then measured minimum size is zero
-            if (clipContent || resizeMode == ResizeMode.SCALE)
+            if (clipAndEnableScrolling || resizeMode == ResizeMode.SCALE)
             {
                 measuredMinWidth = 0;
                 measuredMinHeight = 0;
@@ -713,17 +712,17 @@
     /**
      *  @copy mx.core.IViewport#horizontalScrollPositionDelta
      */
-    public function getHorizontalScrollPositionDelta(unit:ScrollUnit):Number
-    {
-        return (layout) ? layout.getHorizontalScrollPositionDelta(unit) : 0;
+    public function getHorizontalScrollPositionDelta(scrollUnit:uint):Number
+    {
+        return (layout) ? layout.getHorizontalScrollPositionDelta(scrollUnit) : 0;
     }

     /**
      *  @copy mx.core.IViewport#verticalScrollPositionDelta
      */
-    public function getVerticalScrollPositionDelta(unit:ScrollUnit):Number
-    {
-        return (layout) ? layout.getVerticalScrollPositionDelta(unit) : 0;
+    public function getVerticalScrollPositionDelta(scrollUnit:uint):Number
+    {
+        return (layout) ? layout.getVerticalScrollPositionDelta(scrollUnit) : 0;
     }

     //--------------------------------------------------------------------------
@@ -878,26 +877,27 @@
     //--------------------------------------------------------------------------

     /**
-     *  The number of layout elements in this container. Typically this is the same
-     *  as the number of items in the container.
-     */
-    public function get numLayoutElements():int
+     *  @copy mx.core.IVisualElementContainer#numElements
+     */
+    public function get numElements():int
     {
         return -1;
     }

     /**
-     *  Gets the <i>n</i>th layout item in the container. For visual elements, the
-     *  layout element is the element itself. For data items, the layout element is the
-     *  item renderer instance that is associated with the data item.
-     *
-     *  @param index The index of the layout item to retrieve.
-     *
-     *  @return The layout item at the specified index.
-     */
-    public function getLayoutElementAt(index:int):ILayoutElement
+     *  @copy mx.core.IVisualElementContainer#getElementAt
+     */
+    public function getElementAt(index:int):IVisualElement
     {
         return null;
+    }
+
+    /**
+     *  @copy mx.core.IVisualElementContainer#getElementIndex
+     */
+    public function getElementIndex(element:IVisualElement):int
+    {
+        return -1;
     }

     //----------------------------------


Transferred from the Adobe Open Source Subversion Repository

Revision: 17297
Author:   rfrishbe@adobe.com
Date:     2010-08-12T00:57:49.940595Z

Log Message:
-----------
Fixing up MobileItemRenderer and List to better deal with 5-way support.  Now when someone presses Enter, the caretted item will be selected when inputMode == "touch".  When figuring out 5-way support for real, this will probably change, but I put this in for now.  I also changed MobileItemRenderer to not draw the separators when it's the caretted item.  Once we get a real XD spec on how item renderers should look (and how 5-ways support for them works/looks), this will change.

Also modified TrackBase so that if we're in touch inputMode, the track isn't selectable.  More work needs to be done here around the thumb and touch scrolling interaction, so this is just a start.

QE notes: None
Doc notes: None
Bugs: SDK-27379, SDK-27366
Reviewer: Jason SJ
Tests run: checkintests, mustella slider, scroller, scrollbar
Is noteworthy for integration: No

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

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

--- frameworks/projects/spark/src/spark/components/supportClasses/TrackBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/TrackBase.as
@@ -425,8 +425,11 @@
         }
         else if (instance == track)
         {
-            track.addEventListener(MouseEvent.MOUSE_DOWN, track_mouseDownHandler);
             track.addEventListener(ResizeEvent.RESIZE, track_resizeHandler);
+
+            // track is only clickable if in mouse inputMode
+            if (getStyle("inputMode") == "mouse")
+                track.addEventListener(MouseEvent.MOUSE_DOWN, track_mouseDownHandler);
         }
     }

@@ -450,6 +453,29 @@
             track.removeEventListener(ResizeEvent.RESIZE, track_resizeHandler);
         }
     }
+
+    /**
+     *  @private
+     */
+    override public function styleChanged(styleName:String):void
+    {
+        var allStyles:Boolean = styleName == null || styleName == "styleName";
+
+        super.styleChanged(styleName);
+
+        if (allStyles || styleName == "inputMode")
+        {
+            if (track)
+            {
+                // track is only clickable if in mouse inputMode
+                if (getStyle("inputMode") == "mouse")
+                    track.addEventListener(MouseEvent.MOUSE_DOWN, track_mouseDownHandler);
+                else
+                    track.removeEventListener(MouseEvent.MOUSE_DOWN, track_mouseDownHandler);
+            }
+        }
+    }
+
     /**
      *  @private
      *  If the component is in focus, then it should respond to mouseWheel events. We listen to these


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

--- frameworks/projects/airframework/src/mx/skins/halo/WindowMaximizeButtonSkin.as
+++ frameworks/projects/airframework/src/mx/skins/halo/WindowMaximizeButtonSkin.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.skins.halo
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 19190
Author:   aharui@adobe.com
Date:     2010-12-09T02:52:31.089358Z

Log Message:
-----------
Add ITEM_ROLL_OVER and ITEM_ROLL_OUT to Spark List and ButtonBar

QE notes: New Events
Doc notes: New Events
Bugs: SDK-22334
Reviewer: Ryan
Tests run: checkintests mustella full run
Is noteworthy for integration: yes

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

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ButtonBarBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ButtonBarBase.as
@@ -470,34 +470,6 @@
     }

     /**
-     *  @private
-     */
-    override protected function partAdded(partName:String, instance:Object):void
-    {
-        super.partAdded(partName, instance);
-
-        if (instance == dataGroup)
-        {
-            dataGroup.addEventListener(RendererExistenceEvent.RENDERER_ADD, dataGroup_rendererAddHandler);
-            dataGroup.addEventListener(RendererExistenceEvent.RENDERER_REMOVE, dataGroup_rendererRemoveHandler);
-        }
-    }
-
-    /**
-     *  @private
-     */
-    override protected function partRemoved(partName:String, instance:Object):void
-    {
-        if (instance == dataGroup)
-        {
-            dataGroup.removeEventListener(RendererExistenceEvent.RENDERER_ADD, dataGroup_rendererAddHandler);
-            dataGroup.removeEventListener(RendererExistenceEvent.RENDERER_REMOVE, dataGroup_rendererRemoveHandler);
-        }
-
-        super.partRemoved(partName, instance);
-    }
-
-    /**
      *  @private
      *  Detected changes to iconPlacement and update as necessary.
      */
@@ -605,8 +577,10 @@
     /**
      *  @private
      */
-    private function dataGroup_rendererAddHandler(event:RendererExistenceEvent):void
-    {
+    override protected function dataGroup_rendererAddHandler(event:RendererExistenceEvent):void
+    {
+        super.dataGroup_rendererAddHandler(event);
+
         const renderer:IVisualElement = event.renderer;
         if (renderer)
         {
@@ -621,8 +595,10 @@
     /**
      *  @private
      */
-    private function dataGroup_rendererRemoveHandler(event:RendererExistenceEvent):void
-    {
+    override protected function dataGroup_rendererRemoveHandler(event:RendererExistenceEvent):void
+    {
+        super.dataGroup_rendererRemoveHandler(event);
+
         const renderer:IVisualElement = event.renderer;
         if (renderer)
             renderer.removeEventListener(MouseEvent.CLICK, item_clickHandler);


objectWasDisposed() now handles async class instances that have not been registered yet

--- WeaveJS/src/weavejs/core/SessionManager.as
+++ WeaveJS/src/weavejs/core/SessionManager.as
@@ -120,14 +120,9 @@

 			var handler:Function;

-			// if the parent has not been registered yet
-			if (!d2d_owner_child.map.has(disposableParent))
-			{
-				// if this is an instance of an async class, call the async instance handler
-				handler = Weave.getAsyncInstanceHandler(disposableParent.constructor);
-				if (handler != null)
-					handler(disposableParent);
-			}
+			// objectWasDisposed() will call async instance handler if the object hasn't been seen before
+			if (objectWasDisposed(disposableParent))
+				throw new Error("registerDisposableChild(): Parent was previously disposed");

 			// if this child has no owner yet...
 			if (!map_child_owner.has(disposableChild))
@@ -135,6 +130,10 @@
 				// make this first parent the owner
 				map_child_owner.set(disposableChild, disposableParent);
 				d2d_owner_child.set(disposableParent, disposableChild, true);
+
+				// objectWasDisposed() will call async instance handler if the object hasn't been seen before
+				if (objectWasDisposed(disposableChild))
+					throw new Error("registerDisposableChild(): Child was previously disposed");

 				// if this is an instance of an async class, call the async instance handler
 				handler = Weave.getAsyncInstanceHandler(disposableChild.constructor);
@@ -908,12 +907,26 @@
 		{
 			if (object == null)
 				return false;
+
+			// if the object has not been registered yet
+			if (!d2d_owner_child.map.has(object))
+			{
+				// create a placeholder to prevent this code from running again
+				d2d_owner_child.map.set(object, new JS.Map());
+
+				// if this is an instance of an async class, call the async instance handler
+				var handler:Function = Weave.getAsyncInstanceHandler(object.constructor);
+				if (handler != null)
+					handler(object);
+			}
+
 			if (object is ILinkableObject)
 			{
 				var cc:CallbackCollection = getCallbackCollection(object as ILinkableObject) as CallbackCollection;
 				if (cc)
 					return cc.wasDisposed;
 			}
+
 			return map_disposed.has(object);
 		}


Editorialize a bit in this comment to explain the naive seeming tack

--- src/CameraMan.as
+++ src/CameraMan.as
@@ -77,7 +77,14 @@
             trace('Nope size is ' + nope.width + ', ' + nope.height);
             trace('Nope size 2 is ' + nope.width + ', ' + nope.height);

-            // Prefer the USB Video Class Video camera, since that's the webcam on the Mac.
+            // One would think we could try to get the default camera, then if
+            // it doesn't really provide a stream, try each available video
+            // source in turn until we find one that does provide a stream.
+            // However, we can't try them here, because they all will report
+            // sizes with a currentFPS of 0, and even when attached to the
+            // Video, all the Video.videoWidths will still be 0. Instead,
+            // blindly prefer the USB Video Class Video camera, since that's
+            // the webcam on the Mac.
             var i:int = Camera.names.indexOf("USB Video Class Video");
             cam = Camera.getCamera(i == -1 ? null : String(i));


Transferred from the Adobe Open Source Subversion Repository

Revision: 13693
Author:   hmuller@adobe.com
Date:     2010-01-21T20:25:54.403160Z

Log Message:
-----------
Initial version of the mirroring layout code.  Only Spark is supported.  API revisions for this feature are very likely to follow.

QE notes:
Doc notes:
Bugs:
Reviewer: Evtim
Tests run: All Mustella tests pass
Is noteworthy for integration: yes

Modified Paths:
--------------
<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/spark/src/spark/components/HSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/MatrixUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/PopUpAnchor.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/spark/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/CheckBoxSkin.mxml</path>
<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/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualElement.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ILayoutDirection.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/PanelSkin.mxml</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/spark/src/spark/utils/BitmapUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/AdvancedLayoutFeatures.as</path>

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

--- frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
+++ frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
@@ -33,6 +33,7 @@
 import mx.core.AdvancedLayoutFeatures;
 import mx.core.DesignLayer;
 import mx.core.IInvalidating;
+import mx.core.ILayoutDirection;
 import mx.core.ILayoutElement;
 import mx.core.IMXMLObject;
 import mx.core.IUIComponent;
@@ -93,7 +94,7 @@
  *  @productversion Flex 4
  */
 public class GraphicElement extends EventDispatcher
-    implements IGraphicElement, IInvalidating, ILayoutElement, IVisualElement, IMXMLObject
+    implements IGraphicElement, IInvalidating, ILayoutElement, ILayoutDirection, IVisualElement, IMXMLObject
 {
     include "../../core/Version.as";

@@ -256,6 +257,7 @@
         layoutFeatures = new AdvancedLayoutFeatures();
         layoutFeatures.layoutX = _x;
         layoutFeatures.layoutY = _y;
+		layoutFeatures.layoutWidth = _width;  // for the mirror transform
     }

     /**
@@ -638,6 +640,7 @@
     public function parentChanged(value:Group):void
     {
         _parent = value;
+        invalidateLayoutDirection();
     }

     //----------------------------------
@@ -2415,8 +2418,15 @@

         var oldValue:Number = _width;
         _width = value;
-
-        dispatchPropertyChangeEvent("width", oldValue, value);
+
+		// The width is needed for the mirroring transform.
+		if (layoutFeatures)
+		{
+			layoutFeatures.layoutWidth = value;
+			invalidateTransform();
+		}
+
+		dispatchPropertyChangeEvent("width", oldValue, value);

         // Invalidate the display list, since we're changing the actual width
         // and we're not going to correctly detect whether the layout sets
@@ -2838,6 +2848,53 @@
     public function get displayObjectSharingMode():String
     {
         return _displayObjectSharingMode;
+    }
+
+	//----------------------------------
+	//  layoutDirection
+	//----------------------------------
+
+	private var _layoutDirection:String = "inherit";
+
+	public function get layoutDirection():String
+	{
+		return _layoutDirection;
+	}
+
+	/**
+	 *  @copy mx.core.IVisualElement#layoutDirection
+	 */
+	public function set layoutDirection(value:String):void
+	{
+		if (_layoutDirection == value)
+			return;
+
+		_layoutDirection = value;
+        invalidateLayoutDirection();
+    }
+
+    /**
+     * @copy mx.core.ILayoutDirection#invalidateLayoutDirection()
+     */
+    public function invalidateLayoutDirection():void
+    {
+        const parentElt:ILayoutDirection = parent as ILayoutDirection;
+        if (!parentElt)
+            return;
+
+        // If this element's layoutDirection doesn't match its parent's, then
+        // set the layoutFeatures.mirror flag.  Similarly, if mirroring isn't
+        // required, then clear the layoutFeatures.mirror flag.
+
+        const mirror:Boolean = (_layoutDirection != "inherit") && (_layoutDirection != parentElt.layoutDirection);
+        if ((layoutFeatures) ? (mirror != layoutFeatures.mirror) : mirror)
+        {
+            if (layoutFeatures == null)
+                allocateLayoutFeatures();
+            var previous:Boolean = needsDisplayObject;
+            layoutFeatures.mirror = mirror;
+            invalidateTransform(previous != needsDisplayObject);
+        }
     }

     //--------------------------------------------------------------------------
@@ -2973,7 +3030,7 @@
             (_blendMode != BlendMode.NORMAL && _blendMode != "auto") || _mask ||
             (layoutFeatures != null && (layoutFeatures.layoutScaleX != 1 || layoutFeatures.layoutScaleY != 1 || layoutFeatures.layoutScaleZ != 1 ||
             layoutFeatures.layoutRotationX != 0 || layoutFeatures.layoutRotationY != 0 || layoutFeatures.layoutRotationZ != 0 ||
-            layoutFeatures.layoutZ  != 0)) ||
+            layoutFeatures.layoutZ  != 0 || layoutFeatures.mirror)) ||
             _colorTransform != null ||
             _effectiveAlpha != 1);

@@ -4279,6 +4336,12 @@

             _width = width;
             _height = height;
+
+			if (layoutFeatures)  // mirroring transform depends on width
+            {
+				layoutFeatures.layoutWidth = width;
+                invalidateTransform();
+            }

             if (width != oldWidth)
                 dispatchPropertyChangeEvent("width", oldWidth, width);