Transferred from the Adobe Open Source Subversion Repository

Revision: 8957
Author:   chaase@adobe.com
Date:     2009-07-31T17:46:23.194626Z

Log Message:
-----------
Fixes bug with scrollbar behavior when fixedThumbSize behavior is enabled. Previously, the thumb was treated as if it were variable size (the default), where the size was related to the pageSize. This meant that a smaller thumb would never reach the end of the track. The new behavior ensures that the smaller fixed-size thumb covers the full range of the track.

QE Notes: We should add tests for fixedThumbSize cases
Doc Notes: None
Bugs: SDK-22370
Reviewer: Hans
API Change: No
Is noteworthy for integration: Yes
tests: checkintests mustella/gumbo/components/ScrollBar mustella/gumbo/components/Scroller

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

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

--- frameworks/projects/spark/src/spark/components/HScrollBar.as
+++ frameworks/projects/spark/src/spark/components/HScrollBar.as
@@ -178,8 +178,15 @@
         var thumbSize:Number = trackSize;
         if (range > 0)
         {
-            thumbSize = Math.min((pageSize / (range + pageSize)) * trackSize, trackSize)
-            thumbSize = Math.max(thumb.minWidth, thumbSize);
+            if (getStyle("fixedThumbSize") === false)
+            {
+                thumbSize = Math.min((pageSize / (range + pageSize)) * trackSize, trackSize)
+                thumbSize = Math.max(thumb.minWidth, thumbSize);
+            }
+            else
+            {
+                thumbSize = thumb ? thumb.width : 0;
+            }
             thumbPos = (value - minimum) * ((trackSize - thumbSize) / range);
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 16920
Author:   tkraikit@adobe.com
Date:     2010-07-14T23:23:27.777373Z

Log Message:
-----------
Fix for bug SDK-25921. Protect against null case.

QE notes: -
Doc notes: -
Bugs: SDK-25921
Reviewer: klin
Tests run: checkintests, mustella
Is noteworthy for integration: -

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

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

--- frameworks/projects/spark/src/spark/components/VScrollBar.as
+++ frameworks/projects/spark/src/spark/components/VScrollBar.as
@@ -220,7 +220,8 @@

         // convert thumb position to parent's coordinates.
         thumbPos = track.localToGlobal(new Point(0, thumbPosTrackY));
-        thumbPosParentY = thumb.parent.globalToLocal(thumbPos).y;
+        if (thumb.parent)
+            thumbPosParentY = thumb.parent.globalToLocal(thumbPos).y;

         thumb.setLayoutBoundsPosition(thumb.getLayoutBoundsX(), Math.round(thumbPosParentY));
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 12469
Author:   jimurphy@adobe.com
Date:     2009-12-03T22:04:16.560316Z

Log Message:
-----------
fix offsets for FB.  Convert line ending from lf to crlf in svn for the proects directory only.  When checking project files in, be sure to save you files this way.  Another update to make sure happens is set the svn properties svn:eol-style = native and svn:mime-type = text/plain (these have been updated on theses files as well)

QE notes: make sure the proper class is selected
Doc notes: no
Bugs: http://bugs.adobe.com/jira/browse/SDK-24498
Reviewer:
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
133 paths were modified

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

--- frameworks/projects/spark/src/spark/effects/WipeDirection.as
+++ frameworks/projects/spark/src/spark/effects/WipeDirection.as
@@ -72,4 +72,4 @@
      */
     public static const DOWN:String = "down";
 }
-}+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 6359
Author:   gruehle@adobe.com
Date:     2009-04-28T20:58:40.137689Z

Log Message:
-----------
Add error skin for Spark components. The error skin is a separate skin, handled in a similar manner as the focus skin. It is shown whenever the errorString property is non-empty. The default implementation overlays a red border on top of the component.

Fixed the font size for tooltips/error tips.

Bugs: SDK-19559, SDK-19495
QE: Yes - spark tests for errorString/validation failure need to be added
Doc: Yes - new errorSkin style on SkinnableComponent
Reviewer: Ryan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/SparkSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/FocusSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/Flex4Classes.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/flex4/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/ErrorSkin.as</path>

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

--- frameworks/projects/spark/src/spark/skins/spark/ErrorSkin.as
+++ frameworks/projects/spark/src/spark/skins/spark/ErrorSkin.as
@@ -0,0 +1,237 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.skins.default
+{
+
+import flash.display.Bitmap;
+import flash.display.BitmapData;
+import flash.display.IBitmapDrawable;
+import flash.events.Event;
+import flash.filters.GlowFilter;
+import flash.geom.ColorTransform;
+import flash.geom.Matrix;
+import flash.geom.Point;
+import flash.geom.Rectangle;
+
+import spark.components.supportClasses.SkinnableComponent;
+import mx.core.UIComponent;
+import mx.core.mx_internal;
+import flash.utils.Dictionary;
+
+/**
+ *  Error skins for Spark components.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+public class ErrorSkin extends UIComponent
+{
+    include "../../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class constants
+    //
+    //--------------------------------------------------------------------------
+
+    // TODO: Make this a style property?
+    private const ERROR_THICKNESS:int = 1;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class variables
+    //
+    //--------------------------------------------------------------------------
+
+    private static var colorTransform:ColorTransform = new ColorTransform(
+                1.01, 1.01, 1.01, 2);
+    private static var glowFilter:GlowFilter = new GlowFilter(
+                0xFF0000, 0.85, 2, 2, 3, 1, false, true);
+    private static var rect:Rectangle = new Rectangle();;
+    private static var filterPt:Point = new Point();
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    public function ErrorSkin()
+    {
+        super();
+
+        mouseEnabled = false;
+        mouseChildren = false;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Bitmap capture of the focused component. This bitmap includes a glow
+     *  filter that shows the focus glow.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    private var bitmap:Bitmap;
+
+    /**
+     * @private
+     */
+    private var _errorObject:SkinnableComponent;
+
+    /**
+     *  Object to draw error around.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get errorObject():SkinnableComponent
+    {
+        return _errorObject;
+    }
+
+    public function set errorObject(value:SkinnableComponent):void
+    {
+        _errorObject = value;
+
+        // Add an "updateComplete" listener to the skin so we can redraw
+        // whenever the skin is drawn.
+        if (_errorObject.skin)
+            _errorObject.skin.addEventListener("updateComplete",
+                    skin_updateCompleteHandler, false, 0, true);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods
+    //
+    //--------------------------------------------------------------------------
+
+    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+    {
+        // Early exit if we don't have an error object
+        if (!errorObject)
+            return;
+
+        // Grab a bitmap of the error object
+        var bitmapData:BitmapData = new BitmapData(
+                    errorObject.width + (ERROR_THICKNESS * 2),
+                    errorObject.height + (ERROR_THICKNESS * 2), true, 0);
+        var m:Matrix = new Matrix();
+
+        // If the error object has a focus skin, make sure it is hidden.
+        if (errorObject.mx_internal::focusObj)
+            errorObject.mx_internal::focusObj.visible = false;
+
+        // Temporary solution for error drawing on CheckBox and RadioButton components.
+        // Hide the label before drawing the focus.
+        // TODO: Figure out a better solution.
+        var hidLabelElement:Boolean = false;
+        if ((weakIsCheck(errorObject, "spark.components::CheckBox") ||
+             weakIsCheck(errorObject, "spark.components::RadioButton"))
+             && Object(errorObject).labelElement)
+        {
+            Object(errorObject).labelElement.displayObject.visible = false;
+            hidLabelElement = true;
+        }
+
+        m.tx = ERROR_THICKNESS;
+        m.ty = ERROR_THICKNESS;
+        bitmapData.draw(errorObject as IBitmapDrawable, m);
+
+        // Show the focus skin, if needed.
+        if (errorObject.mx_internal::focusObj)
+            errorObject.mx_internal::focusObj.visible = true;
+
+        // Show the label, if needed.
+        if (hidLabelElement)
+            Object(errorObject).labelElement.displayObject.visible = true;
+
+        // Special case for Scroller - fill the entire rect.
+        // TODO: Figure out a better solution.
+        if (weakIsCheck(errorObject, "spark.components::Scroller"))
+        {
+            rect.x = rect.y = ERROR_THICKNESS;
+            rect.width = errorObject.width;
+            rect.height = errorObject.height;
+            bitmapData.fillRect(rect, 0xFFFFFFFF);
+        }
+
+        // Transform the color to remove the transparency. The GlowFilter has the "knockout" property
+        // set to true, which removes this image from the final display, leaving only the outer glow.
+        rect.x = rect.y = ERROR_THICKNESS;
+        rect.width = errorObject.width;
+        rect.height = errorObject.height;
+        bitmapData.colorTransform(rect, colorTransform);
+
+        // Apply the glow filter
+        rect.x = rect.y = 0;
+        rect.width = bitmapData.width;
+        rect.height = bitmapData.height;
+        glowFilter.color = errorObject.getStyle("errorColor");
+        bitmapData.applyFilter(bitmapData, rect, filterPt, glowFilter);
+
+        if (!bitmap)
+        {
+            bitmap = new Bitmap();
+            addChild(bitmap);
+        }
+
+        bitmap.bitmapData = bitmapData;
+
+        // Set the size of the bitmap to be the size of the component. This has the effect
+        // of overlaying the error skin on the border of the component.
+        bitmap.width = errorObject.width;
+        bitmap.height = errorObject.height;
+    }
+
+    private static var classDefCache:Object = {};
+
+    /**
+     *  @private
+     */
+    private function weakIsCheck(obj:Object, className:String):Boolean
+    {
+        if (!(className in classDefCache))
+        {
+            var classObj:Class = Class(systemManager.getDefinitionByName(className));
+
+            classDefCache[className] = classObj;
+        }
+
+        if (!classDefCache[className])
+            return false;
+
+        return obj is classDefCache[className];
+    }
+
+    /**
+     *  @private
+     */
+    private function skin_updateCompleteHandler(event:Event):void
+    {
+        // Whenever the skin is updated, we need to redraw
+        invalidateDisplayList();
+    }
+}
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 5101
Author:   gauravj@adobe.com
Date:     2009-02-27T05:22:45.887116Z

Log Message:
-----------
Update action script files with asdoc version tags.

QE Notes: None.
Doc Notes: Please review and update as necessary.
tests: checkintests

Modified Paths:
--------------
663 paths were modified

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

--- frameworks/projects/framework/src/mx/validators/CreditCardValidator.as
+++ frameworks/projects/framework/src/mx/validators/CreditCardValidator.as
@@ -102,6 +102,11 @@
  *  @see mx.validators.CreditCardValidatorCardType
  *
  *  @includeExample examples/CreditCardValidatorExample.mxml
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class CreditCardValidator extends Validator
 {
@@ -141,6 +146,11 @@
 	 *  object for each field examined by the validator.
 	 *
 	 *  @see mx.validators.ValidationResult
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public static function validateCreditCard(validator:CreditCardValidator,
 											  value:Object,
@@ -401,6 +411,11 @@

 	/**
 	 *  Constructor.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function CreditCardValidator()
 	{
@@ -482,6 +497,11 @@
 	 *  cardNumber field.
 	 *
 	 *  @default " -" (space and dash)
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get allowedFormatChars():String
 	{
@@ -533,6 +553,11 @@
 	 *  for the card number subfield.
 	 *  If none is specified, use the value specified
 	 *  to the cardNumberSource property.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get cardNumberListener():IValidatorListener
 	{
@@ -565,6 +590,11 @@
 	 *  This attribute is optional, but if you specify
 	 *  the cardNumberSource property,
 	 *  you should also set this property.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var cardNumberProperty:String;

@@ -586,6 +616,11 @@
 	 *  a value for the cardNumberProperty property.
 	 *  Do not use this property if you set the source
 	 *  and property properties.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get cardNumberSource():Object
 	{
@@ -631,6 +666,11 @@
 	 *  for the card type subfield.
 	 *  If none is specified, then use the value
 	 *  specified to the cardTypeSource property.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get cardTypeListener():IValidatorListener
 	{
@@ -681,6 +721,11 @@
 	 *  CreditCardValidatorCardType.VISA.

 	 *
 	 *  @see mx.validators.CreditCardValidatorCardType
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var cardTypeProperty:String;

@@ -702,6 +747,11 @@
 	 *  a value for the cardTypeProperty property.
 	 *  Do not use this property if you set the source
 	 *  and property properties.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get cardTypeSource():Object
 	{
@@ -757,6 +807,11 @@
 	 *  Error message when the cardNumber field contains invalid characters.
 	 *
 	 *  @default "Invalid characters in your credit card number. (Enter numbers only.)"
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get invalidCharError():String
 	{
@@ -797,6 +852,11 @@
 	 *  Error message when the credit card number is invalid.
 	 *
 	 *  @default "The credit card number is invalid."
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get invalidNumberError():String
 	{
@@ -837,6 +897,11 @@
 	 *  Error message when the cardNumber field is empty.
 	 *
 	 *  @default "No credit card number is specified."
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get noNumError():String
 	{
@@ -877,6 +942,11 @@
 	 *  Error message when the cardType field is blank.
 	 *
 	 *  @default "No credit card type is specified or the type is not valid."
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get noTypeError():String
 	{
@@ -918,6 +988,11 @@
 	 *  number of digits for the specified credit card type.
 	 *
 	 *  @default "Your credit card number contains the wrong number of digits."
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get wrongLengthError():String
 	{
@@ -964,6 +1039,11 @@
 	 *  CreditCardValidatorCardType.DINERS_CLUB.
 	 *
 	 *  @default "Incorrect card type is specified."
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get wrongTypeError():String
 	{
@@ -1018,6 +1098,11 @@
      *
 	 *  @return An Array of ValidationResult objects, with one ValidationResult
 	 *  object for each field examined by the validator.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	override protected function doValidation(value:Object):Array
     {


Transferred from the Adobe Open Source Subversion Repository

Revision: 18173
Author:   jasonsj@adobe.com
Date:     2010-10-15T17:03:20.801634Z

Log Message:
-----------
Mobile Theme Initial check-in

* New light-look visuals from XD
* Changed airmobile-config.xml to use standalone Mobile theme instead of Spark overlay
* Added theme="spark, mobile" where spark was already white-listed and support is implemented and/or planned for Mobile/spark.css (see https://zerowing.corp.adobe.com/display/flexmobile/Mobile+Theme+Styles+Spec)
* MobileSkin has symbolColor and chromeColor support. Override beginChromeColorFill and drawChromeColor when defining custom chromeColor visuals.
* CheckBox and RadioButton now have chromeColor and symbolColor support
* Added textShadowColor and textShadowAlpha support to Button and ActionBar
* Added chromeColor support to HScrollBar and VScrollBar

QE notes: All mobile skins have been updaetd.
Doc notes: Update mobile skinning documentation for new APIs
Bugs:
SDK-28043 Investigate usage of "viewWidth", "viewHeight" for the Flex Mobile Skin Assets
SDK-27609 Mobile scroll bar skins should use chromeColor
SDK-27646 cornerradius has no effect on button in mobile application
Reviewer: gruehle
Tests run: checkintests
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarTrackSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Button.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/metadata/BorderStyles.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/CheckBox_symbol.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Image.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/RadioButton_symbol.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/Button_up.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/metadata/ContainerBackgroundStyles.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/CheckBox.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Group.as</path>
<path kind="file" action="M">/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/mobiletheme/src/spark/skins/mobile/assets/CheckBox_up.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/RadioButton_up.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/TextInput_border.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SliderBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/Button_down.fxg</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/CheckBox_upSelected.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/SkinnableContainer.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/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/RadioButton_upSelected.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/CheckBox_down.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewMenuItemSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/RadioButton_down.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarTrackSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/controls/ToolTip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RadioButton.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/CheckBox_downSelected.fxg</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/themes/Mobile/spark.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/SelectableButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/airmobile-config.xml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/CheckBoxSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/RadioButton_downSelected.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/RadioButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/NavigationButtonSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as
@@ -40,6 +40,7 @@
      private static const HORIZONTAL_PADDING:int = 8;
      private static const VERTICAL_PADDING:int = 12;
      private static const TEXT_HEIGHT_PADDING:int = 6;
+     private static const CORNER_ELLIPSE_SIZE:uint = 16;

      //--------------------------------------------------------------------------
      //
@@ -121,7 +122,7 @@
         // Draw the contentBackgroundColor
         graphics.clear();
         graphics.beginFill(getStyle("contentBackgroundColor"), getStyle("contentBackgroundAlpha"));
-    	graphics.drawRoundRect(2, 2, unscaledWidth - 4, unscaledHeight - 4, 4, 4);
+    	graphics.drawRoundRect(1, 1, unscaledWidth - 2, unscaledHeight - 2, CORNER_ELLIPSE_SIZE, CORNER_ELLIPSE_SIZE);
         graphics.endFill();

         // position & size border


Transferred from the Adobe Open Source Subversion Repository

Revision: 12980
Author:   hhillen@paciellogroup.com
Date:     2009-12-16T01:33:56.528408Z

Log Message:
-----------
Minor fix for SliderBaseAccImpl and SpinnerAccImpl
QE notes: none
Doc notes: none
Bugs: n/a
Reviewer: Gordon
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SliderBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SpinnerAccImpl.as</path>

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

--- frameworks/projects/spark/src/spark/accessibility/SliderBaseAccImpl.as
+++ frameworks/projects/spark/src/spark/accessibility/SliderBaseAccImpl.as
@@ -225,6 +225,8 @@
      */
     override public function get_accValue(childID:uint):String
     {
+        if (childID > 0)
+            return null;
         var val:Number = SliderBase(master).value;

         val = (val -  SliderBase(master).minimum) /


BinnedColumn now validates asynchronously.

--- WeaveData/src/weave/data/AttributeColumns/BinnedColumn.as
+++ WeaveData/src/weave/data/AttributeColumns/BinnedColumn.as
@@ -21,6 +21,7 @@
 {
 	import flash.utils.Dictionary;

+	import weave.api.WeaveAPI;
 	import weave.api.data.AttributeColumnMetadata;
 	import weave.api.data.IAttributeColumn;
 	import weave.api.data.IBinningDefinition;
@@ -44,10 +45,7 @@
 		{
 			binningDefinition.requestLocalObject(SimpleBinningDefinition, false);

-			addImmediateCallback(this, invalidateBins);
-			// when derived bins change, invalidate them
-			// this is to prevent changes to the derivedBins from affecting the internal code.
-			_derivedBins.addImmediateCallback(this, handleDerivedBinsChange);
+			addImmediateCallback(this, handleChange);
 		}

 		/**
@@ -86,7 +84,7 @@
 			return _derivedBins;
 		}

-		private const _derivedBins:BinClassifierCollection = newDisposableChild(this, BinClassifierCollection); // returned by public getter
+		private const _derivedBins:BinClassifierCollection = newLinkableChild(this, BinClassifierCollection); // returned by public getter
 		private var _binNames:Array = null; // maps a bin index to a bin name
 		private var _keyToBinIndexMap:Dictionary = null; // maps a record key to a bin index
 		private var _binnedKeysArray:Array = null; // maps a bin index to a list of keys in that bin
@@ -100,17 +98,19 @@
 		private var _validateBinsCompleted:Boolean = false;

 		/**
-		 * This function sets the dirty flag to true to invalidate the bins.
+		 * This function updates the _dirty flag
 		 */
-		private function invalidateBins():void
-		{
-			_dirty = true;
-		}
-
-		private function handleDerivedBinsChange():void
-		{
-			if (!_validateBinsCompleted)
-				_dirty = true;
+		private function handleChange():void
+		{
+			if (_validateBinsCompleted)
+			{
+				_validateBinsCompleted = false;
+				_dirty = false;
+			}
+			else
+			{
+				_dirty = true;
+			}
 		}

 		/**
@@ -118,48 +118,63 @@
 		 * and also saves lookups for mapping between bins and keys.
 		 */
 		private function validateBins():void
-		{
+		{
+			_dirty = false;
 			_derivedBins.delayCallbacks(); // make sure callbacks don't run until we're done

-			var column:IAttributeColumn = internalDynamicColumn.getInternalColumn();
-			var def:IBinningDefinition = (binningDefinition.internalObject as IBinningDefinition);
+			_column = internalDynamicColumn.getInternalColumn();
+			_def = (binningDefinition.internalObject as IBinningDefinition);
 			// reset cached values
 			_keyToBinIndexMap = new Dictionary();
 			_binnedKeysArray = [];
 			_binnedKeysMap = {};
 			_largestBinSize = 0;
 			_derivedBins.removeAllObjects();
-			if (def != null && column != null)
-				def.getBinClassifiersForColumn(column, _derivedBins);
+			if (_def != null && _column != null)
+				_def.getBinClassifiersForColumn(_column, _derivedBins);
 			// save bin names for faster lookup
 			_binNames = _derivedBins.getNames();
-			if (_binNames.length > 0)
-			{
-				var bins:Array = _derivedBins.getObjects();
-				var i:int;
-				// create empty key arrays
-				for (i = 0; i < _binNames.length; i++)
-					_binnedKeysMap[_binNames[i]] = _binnedKeysArray[i] = []; // same Array pointer
-				// fill all mappings
-				for (i = 0; i < keys.length; i++)
-				{
-					var key:IQualifiedKey = keys[i];
-					// hack: assuming bin classifiers are NumberClassifiers except for CategoryBinningDefinition
-					var dataType:Class = def is CategoryBinningDefinition ? String : Number;
-					var value:* = column.getValueFromKey(key, dataType);
-					var binIndex:Number = _derivedBins.getBinIndexFromDataValue(value);
-					if (isNaN(binIndex))
-						continue;
-					_keyToBinIndexMap[key] = binIndex;
-					(_binnedKeysMap[_binNames[binIndex]] as Array).push(key);
-				}
-				for each (var bin:Array in _binnedKeysArray)
-					_largestBinSize = Math.max(_largestBinSize, bin.length);
-			}
-			_validateBinsCompleted = true; // this prevents invalidateBins() from setting dirty to true
-			_dirty = false;
-			_derivedBins.resumeCallbacks(); // allow callbacks to run now
-			_validateBinsCompleted = false;
+			var bins:Array = _derivedBins.getObjects();
+			var i:int;
+			// create empty key arrays
+			for (i = 0; i < _binNames.length; i++)
+				_binnedKeysMap[_binNames[i]] = _binnedKeysArray[i] = []; // same Array pointer
+			// fill all mappings
+			_keys = keys;
+			_i = 0;
+			WeaveAPI.StageUtils.startTask(this, _asyncIterate, WeaveAPI.TASK_PRIORITY_BUILDING, _asyncComplete);
+		}
+
+		private var _column:IAttributeColumn;
+		private var _def:IBinningDefinition;
+		private var _i:int;
+		private var _keys:Array;
+		private function _asyncIterate():Number
+		{
+			var progress:Number = 1;
+			if (_i < _keys.length)
+			{
+				var key:IQualifiedKey = keys[_i];
+				// hack: assuming bin classifiers are NumberClassifiers except for CategoryBinningDefinition
+				var dataType:Class = _def is CategoryBinningDefinition ? String : Number;
+				var value:* = _column.getValueFromKey(key, dataType);
+				var binIndex:Number = _derivedBins.getBinIndexFromDataValue(value);
+				if (!isNaN(binIndex))
+				{
+					_keyToBinIndexMap[key] = binIndex;
+					var array:Array = _binnedKeysArray[binIndex] as Array;
+					if (array.push(key) > _largestBinSize)
+						_largestBinSize = array.length;
+				}
+				progress = _i++ / _keys.length;
+			}
+			return progress;
+		}
+
+		private function _asyncComplete():void
+		{
+			_validateBinsCompleted = true; // tells handleChange() that the bins are now valid
+			_derivedBins.resumeCallbacks(true); // allow callbacks to run now
 		}

 		/**


Negative scale and rotation fixes, maybe.

--- runtime/src/main/as/flump/MatrixUtil.as
+++ runtime/src/main/as/flump/MatrixUtil.as
@@ -9,7 +9,7 @@
 {
     public static function scaleX (m :Matrix) :Number
     {
-        return Math.sqrt(m.a * m.a + m.b * m.b);
+        return sign(m.a) * Math.sqrt(m.a * m.a + m.b * m.b);
     }

     public static function setScaleX (m :Matrix, scaleX :Number) :void
@@ -28,7 +28,7 @@

     public static function scaleY (m :Matrix) :Number
     {
-        return Math.sqrt(m.c * m.c + m.d * m.d);
+        return sign(m.d) * Math.sqrt(m.c * m.c + m.d * m.d);
     }

     public static function setScaleY (m :Matrix, scaleY :Number) :void
@@ -71,7 +71,7 @@

     public static function rotation (m :Matrix) :Number
     {
-        return MatrixUtil.skewY(m);
+        return (m.a == 0) ? 0 : Math.atan(m.b / m.a);
     }

     public static function setRotation (m :Matrix, rotation :Number) :void
@@ -81,5 +81,10 @@
         MatrixUtil.setSkewX(m, curSkewX + rotation - curRotation);
         MatrixUtil.setSkewY(m, rotation);
     }
+
+    protected static function sign (value :Number) :Number
+    {
+        return (value < 0) ? -1 : (value > 0) ? 1 : 0;
+    }
 }
 }


Editor: more info about models

Editor: more info about models

--- bin/Data/Scripts/Editor/EditorHierarchyWindow.as
+++ bin/Data/Scripts/Editor/EditorHierarchyWindow.as
@@ -668,7 +668,14 @@

     for (uint g = 0; g < model.numGeometries; ++g)
     {
-        infoStr += "\n  Geometry " + g + "\n    Lods: " + model.numGeometryLodLevels[g];
+        uint numLods = model.numGeometryLodLevels[g];
+        infoStr += "\n  Geometry " + g + "\n    Lods: " + numLods;
+        for (uint l = 0; l < numLods; l++)
+        {
+            Geometry@ geom = model.GetGeometry(g, l);
+            infoStr += "\n      Vertex Count: " + geom.vertexCount;
+            infoStr += "\n      Index Count: " + geom.indexCount;
+        }
     }

     modelInfoText.text = infoStr;


added ignoreKeyType option to getAssociatedKeys()

--- WeaveData/src/weave/utils/EquationColumnLib.as
+++ WeaveData/src/weave/utils/EquationColumnLib.as
@@ -155,9 +155,10 @@
 		 * This function returns a list of IQualifiedKey objects using a reverse lookup of value-key pairs
 		 * @param column An attribute column
 		 * @param keyValue The value to look up
+		 * @param ignoreKeyType If true, ignores the dataType of the column (the column's foreign keyType) and the keyType of the keyValue
 		 * @return An array of record keys with the given value under the given column
 		 */
-		public static function getAssociatedKeys(column:IAttributeColumn, keyValue:IQualifiedKey):Array
+		public static function getAssociatedKeys(column:IAttributeColumn, keyValue:IQualifiedKey, ignoreKeyType:Boolean = false):Array
 		{
 			var lookup:Dictionary = _reverseKeyLookupCache[column] as Dictionary;
 			if (lookup == null || column.triggerCounter != _reverseKeyLookupTriggerCounter[column]) // if cache is invalid, validate it now
@@ -169,13 +170,11 @@
 					var value:IQualifiedKey = column.getValueFromKey(recordKey, IQualifiedKey) as IQualifiedKey;
 					if (value == null)
 						continue;
-					var keys:Array = lookup[value] as Array;
-					if (keys == null)
-						lookup[value] = keys = [];
-					keys.push(recordKey);
+					(lookup[value] as Array || (lookup[value] = []) as Array).push(recordKey);
+					(lookup[value.localName] as Array || (lookup[value.localName] = []) as Array).push(recordKey);
 				}
 			}
-			return lookup[keyValue] as Array;
+			return lookup[ignoreKeyType ? keyValue.localName : keyValue] as Array;
 		}

 		/**


Transferred from the Adobe Open Source Subversion Repository

Revision: 10959
Author:   pfarland@adobe.com
Date:     2009-10-09T20:38:19.988292Z

Log Message:
-----------
Adding support for FXG 2.0 additional blend modes that do not have a SWF equivalent. For the optimized FXG case, we now generate an ActionScript SymbolClass and set the corresponding blend shader. This requires checking in the additional shader classes and PBJ files, but note we do not yet use them in MXML graphics.

Note: This change does not address luminosity masks.

QE notes: Please update FXG opt. testsuites for additional blendModes.
Doc notes: No
Bugs: N/A
Reviewer: Paul
Tests run: checkintests, mustella spark/core/fxg
Is noteworthy for integration: Yes, this change includes support for the additional blendModes of FXG 2.0 (though only for the optimized FXG case, and not MXML graphics).

Modified Paths:
--------------
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/ColorDodge.pbj</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/Hue.pbj</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/SoftLightShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/SparkClasses.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FlexFXG2SWFTranscoder.java</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/ColorBurnShader.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/ExclusionShader.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/Saturation.pbj</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/LuminosityShader.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/ColorShader.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/ColorDodgeShader.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/HueShader.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/SoftLight.pbj</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/ColorBurn.pbj</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/SaturationShader.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/Exclusion.pbj</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/Luminosity.pbj</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/Color.pbj</path>

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

--- frameworks/projects/spark/src/SparkClasses.as
+++ frameworks/projects/spark/src/SparkClasses.as
@@ -27,6 +27,14 @@
 import mx.controls.MXFTETextInput; MXFTETextInput;
 import mx.core.UIFTETextField; UIFTETextField;
 import spark.core.SpriteVisualElement; SpriteVisualElement;
+import spark.primitives.shaders.ColorBurnShader; ColorBurnShader;
+import spark.primitives.shaders.ColorDodgeShader; ColorDodgeShader;
+import spark.primitives.shaders.ColorShader; ColorShader;
+import spark.primitives.shaders.ExclusionShader; ExclusionShader;
+import spark.primitives.shaders.HueShader; HueShader;
+import spark.primitives.shaders.LuminosityShader; LuminosityShader;
+import spark.primitives.shaders.SaturationShader; SaturationShader;
+import spark.primitives.shaders.SoftLightShader; SoftLightShader;
 import spark.skins.spark.ApplicationSkin; ApplicationSkin;
 import spark.skins.spark.BorderSkin; BorderSkin;
 import spark.skins.spark.ButtonSkin; ButtonSkin;


Transferred from the Adobe Open Source Subversion Repository

Revision: 4062
Author:   chaase@adobe.com
Date:     2008-11-10T23:01:38.086960Z

Log Message:
-----------
Fixed 17893. Added doInterval() to end of Tween.seek() to ensure that the seeking operating happens immediately, instead of just on the next frame interval. This makes it possible to seek to exact times in the old effects (the new effects already have this behavior, via Animation.seek()).

QE Notes:
Doc Notes:
Bugs: sdk-17893
Reviewer: Jason
Tests: checkintests, Mustella (Effects, gumbo/effects, ListDataEffects)

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Tween.as

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

--- frameworks/projects/framework/src/mx/effects/Tween.as
+++ frameworks/projects/framework/src/mx/effects/Tween.as
@@ -653,6 +653,8 @@
         startTime = clockTime - playheadTime;

         _doSeek = true;
+
+        doInterval();
     }

     /**


Fixed same issue as reported in FLEX-18697

--- frameworks/projects/rpc/src/mx/utils/RPCObjectUtil.as
+++ frameworks/projects/rpc/src/mx/utils/RPCObjectUtil.as
@@ -735,9 +735,9 @@
             for (var flag:String in options)
             {
                 key += flag;
-                var value:String = options[flag] as String;
-                if (value != null)
-                    key += value;
+				var value:String = options[flag];
+				if (value != null)
+					key += value.toString();
             }
         }
         return key;


Transferred from the Adobe Open Source Subversion Repository

Revision: 7158
Author:   gruehle@adobe.com
Date:     2009-05-20T23:15:45.921650Z

Log Message:
-----------
Wireframe skin changes:

* Add DropDownListSkin
* Change default button size to 21 pixels high (was 23)
* Tweaked color for DefaultButtonSkin

Bugs: SDK-19693
QA Notes: Joann is creating new baseline bitmaps
Doc Notes: None

Modified Paths:
--------------
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/DropDownListButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/WireframeClasses.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/DropDownListSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ToggleButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/DefaultButtonSkin.mxml</path>

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

--- frameworks/projects/wireframe/src/WireframeClasses.as
+++ frameworks/projects/wireframe/src/WireframeClasses.as
@@ -31,6 +31,8 @@
 	import spark.skins.wireframe.ButtonSkin; ButtonSkin;
 	import spark.skins.wireframe.CheckBoxSkin; CheckBoxSkin;
 	import spark.skins.wireframe.DefaultButtonSkin; DefaultButtonSkin;
+	import spark.skins.wireframe.DropDownListButtonSkin; DropDownListButtonSkin;
+	import spark.skins.wireframe.DropDownListSkin; DropDownListSkin;
 	import spark.skins.wireframe.HScrollBarSkin; HScrollBarSkin;
 	import spark.skins.wireframe.HScrollBarThumbSkin; HScrollBarThumbSkin;
 	import spark.skins.wireframe.HScrollBarTrackSkin; HScrollBarTrackSkin;


Added keys() and values() to Array-ificate Object/Dictionary properties.

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@5679 542714f4-19e9-0310-aa3c-eee0fc999fb1

--- src/as/com/threerings/util/ArrayUtil.as
+++ src/as/com/threerings/util/ArrayUtil.as
@@ -42,6 +42,32 @@
             arr[ii] = val;
         }

+        return arr;
+    }
+
+    /**
+     * Get an array containing the property keys of the specified object, in their
+     * natural iteration order.
+     */
+    public static function keys (obj :Object) :Array
+    {
+        var arr :Array = [];
+        for (var k :* in obj) { // no "each": iterate over keys
+            arr.push(k);
+        }
+        return arr;
+    }
+
+    /**
+     * Get an array containing the property values of the specified object, in their
+     * natural iteration order.
+     */
+    public static function values (obj :Object) :Array
+    {
+        var arr :Array = [];
+        for each (var v :* in obj) { // "each" iterates over values
+            arr.push(v);
+        }
         return arr;
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 12850
Author:   jimurphy@adobe.com
Date:     2009-12-11T14:57:14.623098Z

Log Message:
-----------
add 6 new DMV projects to the SDK:
automation
automation_air
automation_dmv
automation_flashflexkit
automation_spark
datavisualization

These projects are setup to build in an ant main call.  There are currently several warnings in the datavisualization project that will be cleaned up.  No checkintests exist for these projects as of yet.

I also modified the exisitng projects build files for easier management of the localization targets, bundle and fat-swc. If the projects that I updated:airframework,airspark,framework,playerglobal,rpc,and spark.  All the new projects have been implemented this same way.

QE notes: DMV folks should run through their tests
Doc notes: probably
Bugs: nope
Reviewer:
Tests run: ran the following targets: compile,checkintests,other.locales and doc
Is noteworthy for integration: no

Modified Paths:
--------------
1404 paths were modified

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

--- frameworks/projects/advancedgrids/src/mx/olap/IOLAPSet.as
+++ frameworks/projects/advancedgrids/src/mx/olap/IOLAPSet.as
@@ -0,0 +1,139 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+
+import mx.collections.IList;
+
+/**
+ *  The IOLAPSet interface represents a set,
+ *  which is used to configure the axis of an OLAP query.
+ *
+ *  @see mx.olap.OLAPSet
+ *  @see mx.olap.OLAPQueryAxis
+ *  @see mx.olap.IOLAPResultAxis
+ *  @see mx.olap.OLAPResultAxis
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public interface IOLAPSet
+{
+	//--------------------------------------------------------------------------
+	//
+	//  Methods
+	//
+	//--------------------------------------------------------------------------
+
+   /**
+    *  Adds a new member to the set.
+    *
+    *
This method adds the appropriate elements to the set,
+    *  depending on the type of element passed in.
+    *  If an IOLAPHierarchy element is passed, it adds the default member of the hierarchy.
+    *  If an IOLAPLevel element is passed, it adds all the members of the level.
+    *  If an IOLAPMember element is passed, it is added to the set.

+    *
+    *  @param element The member to add.
+    *  If element is a hierarchy or level, its members
+    *  are added. If element is an instance of IOLAPMember,
+    *  it is added directly.
+    *  A new tuple is created for each member.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
+    */
+   function addElement(element:IOLAPElement):void
+
+   /**
+    *  Adds a list of members to the set.
+    *  This method can be called when members or children of a hierarchy
+    *  or member need to be added to the set.
+    *
+    *  @param element The members to add, as a list of IOLAPMember instances.
+    *  A new tuple is created for each member.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
+    */
+   function addElements(elements:IList):void
+
+   /**
+    *  Adds a new tuple to the set.
+    *
+    *  @param tuple The tuple to add.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
+    */
+   function addTuple(tuple:IOLAPTuple):void;
+
+   /**
+    *  Returns a new IOLAPSet instance that contains a crossjoin of this
+    *  IOLAPSet instance and input.
+    *
+    *  @param input An IOLAPSet instance.
+    *
+    *  @return An IOLAPSet instance that contains a crossjoin of this
+    *  IOLAPSet instance and input.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
+    */
+   function crossJoin(input:IOLAPSet):IOLAPSet;
+
+   /**
+    *  Returns a new IOLAPSet that is hierarchized version
+    *  of this set.
+    *
+    *  @param post If true indicates that children should precede parents.
+    *  By default, parents precede children.
+    *
+    *  @return A new IOLAPSet that is hierarchized version
+    *  of this set.
+    *
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
+    */
+   function hierarchize(post:Boolean=false):IOLAPSet;
+
+   /**
+    *  Returns a new IOLAPSet instance that contains a union of this
+    *  IOLAPSet instance and input.
+    *
+    *  @param input An IOLAPSet instance.
+    *
+    *  @return An IOLAPSet instance that contains a union of this
+    *  IOLAPSet instance and input.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
+    */
+   function union(input:IOLAPSet/*, keepDuplicates:Boolean=false*/):IOLAPSet;
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 5101
Author:   gauravj@adobe.com
Date:     2009-02-27T05:22:45.887116Z

Log Message:
-----------
Update action script files with asdoc version tags.

QE Notes: None.
Doc Notes: Please review and update as necessary.
tests: checkintests

Modified Paths:
--------------
663 paths were modified

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

--- frameworks/projects/framework/src/mx/states/Transition.as
+++ frameworks/projects/framework/src/mx/states/Transition.as
@@ -71,6 +71,11 @@
  *  @see mx.effects.SetStyleAction
  *
  *  @includeExample examples/TransitionExample.mxml
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class Transition
 {
@@ -84,6 +89,11 @@

     /**
      *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
 	public function Transition()
 	{
@@ -108,6 +118,11 @@
 	 *
The effect property is the default property of the
 	 *  Transition class. You can omit the <mx:effect> tag
 	 *  if you use MXML tag syntax.

+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var effect:IEffect;

@@ -125,6 +140,11 @@
      *  which corresponds to the base view state.

      *
      *  @default "*"
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
 	public var fromState:String = "*";

@@ -142,6 +162,11 @@
      *  which corresponds to the base view state.

      *
      *  @default "*"
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var toState:String = "*";

@@ -172,6 +197,11 @@
      *  transition, then playing the B->C transition will occur.

      *
      *  @default false
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
 	public var autoReverse:Boolean = false;
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 7115
Author:   jszeto@adobe.com
Date:     2009-05-20T05:39:23.225806Z

Log Message:
-----------
Changed how components are disabled

SDK-20196 Re-work disabled logic in Spark components
SDK-20197 Remove enableSkinParts() from TrackBase and Spinner

Changed the way that components, in particular, composite components, are disabled. Moved the enabled/disabled logic from SkinnableContainerBase down to SkinnableComponent. Disabled components now prevent mouse interaction with the component and its children. The skin handles the appearance of the component in the disabled state. The Spark skins currently set their alpha to .5.

Composite components like Spinner, and TrackBase no longer disabled their component skin parts.

QE Notes: None
Doc Notes: None
Bugs: SDK-20196, 20197
Reviewer: Ryan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/TrackBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/SkinnableContainerBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VideoPlayerVolumeBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/SkinnableComponent.as</path>

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

--- frameworks/projects/spark/src/spark/components/Spinner.as
+++ frameworks/projects/spark/src/spark/components/Spinner.as
@@ -170,31 +170,6 @@

     //--------------------------------------------------------------------------
     //
-    //  Overridden properties: UIComponent
-    //
-    //--------------------------------------------------------------------------
-
-    //----------------------------------
-    //  enabled
-    //----------------------------------
-
-    /**
-     *  @inheritDoc
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    override public function set enabled(value:Boolean):void
-    {
-        super.enabled = value;
-        enableSkinParts(value);
-        invalidateSkinState();
-    }
-
-    //--------------------------------------------------------------------------
-    //
     // Properties
     //
     //--------------------------------------------------------------------------
@@ -273,8 +248,6 @@
                                         decrementButton_buttonDownHandler);
             decrementButton.autoRepeat = true;
         }
-
-        enableSkinParts(enabled);
     }

     /**
@@ -292,22 +265,6 @@
             decrementButton.removeEventListener(FlexEvent.BUTTON_DOWN,
                                            decrementButton_buttonDownHandler);
         }
-    }
-
-    /**
-     *  @inheritDoc
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    protected function enableSkinParts(value:Boolean):void
-    {
-        if (incrementButton)
-            incrementButton.enabled = value;
-        if (decrementButton)
-            decrementButton.enabled = value;
     }

     /**


image_button

--- src/ras3r/ReactionController.as
+++ src/ras3r/ReactionController.as
@@ -200,7 +200,7 @@
 		*	_blank MUST be default or sites with allowNetworking=internal
 		*	will cause error to be thrown on navigateToURL()
 		*/
-		public function redirect_to_url (url:String, target:String = '_blank', count:uint = 0) :void
+		public static function redirect_to_url (url:String, target:String = '_blank', count:uint = 0) :void
 		{
 			var u:URLRequest = new URLRequest(url);


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

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


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

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


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

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

--- frameworks/projects/flash-integration/src/mx/flash/FlexContentHolder.as
+++ frameworks/projects/flash-integration/src/mx/flash/FlexContentHolder.as
@@ -0,0 +1,332 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.flash
+{
+
+import flash.display.DisplayObject;
+import flash.display.DisplayObjectContainer;
+import flash.display.InteractiveObject;
+import flash.display.MovieClip;
+import flash.geom.Rectangle;
+import flash.utils.getDefinitionByName;
+
+import mx.core.IUIComponent;
+import mx.core.mx_internal;
+
+/**
+ *  The FlexContentHolder class is for internal use only.
+ */
+public dynamic class FlexContentHolder extends ContainerMovieClip
+{
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     */
+    public function FlexContentHolder()
+    {
+        super();
+        trackSizeChanges = false;
+        showInAutomationHierarchy = false;
+
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Internal variables
+    //
+    //--------------------------------------------------------------------------
+
+    private var flexContent:IUIComponent;           // The Flex content
+
+    private var pendingFlexContent:IUIComponent;    // Only used if flexContent is set early
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  content
+    //----------------------------------
+
+    /**
+     *  @inheritDoc
+     */
+    override public function get content():IUIComponent
+    {
+        return flexContent;
+    }
+
+    override public function set content(value:IUIComponent):void
+    {
+        if (initialized)
+            setFlexContent(value);
+        else
+            pendingFlexContent = value;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  IUIComponent methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Initialize the object.
+     *
+     *  @see mx.core.UIComponent#initialize()
+     */
+    override public function initialize():void
+    {
+        super.initialize();
+
+        _width = bounds.width;
+        _height = bounds.height;
+
+        // initialize is only called when we are running in Flex.
+        // Since we are in Flex, let's hide the content placeholder.
+        // Rather than removing it (which can cause problems with
+        // sizing), we set the alpha to 0.
+        getChildAt(0).alpha = 0;
+
+        // See if we have any pending flex content
+        if (pendingFlexContent)
+        {
+            setFlexContent(pendingFlexContent);
+            pendingFlexContent = null;
+        }
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  IFlexDisplayObject methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Sets the actual size of this object.
+     *
+     *
This method is mainly for use in implementing the
+     *  updateDisplayList() method, which is where
+     *  this object's actual size is computed based on
+     *  its explicit size, parent-relative (percent) size,
+     *  and measured size.
+     *  Apply this actual size to the object
+     *  by calling the setActualSize() method.

+     *
+     *
In other situations, you should be setting properties
+     *  such as width, height,
+     *  percentWidth, or percentHeight
+     *  rather than calling this method.

+     *
+     *  @param newWidth The new width for this object.
+     *
+     *  @param newHeight The new height for this object.
+     */
+    override public function setActualSize(newWidth:Number, newHeight:Number):void
+    {
+        if (sizeChanged(_width, newWidth) || sizeChanged(_height, newHeight))
+            dispatchResizeEvent();
+
+        // Remember our new actual size so we can report it later in the
+        // width/height getters.
+        _width = newWidth;
+        _height = newHeight;
+
+        scaleX = scaleY = 1;
+
+        if (flexContent)
+        {
+            sizeFlexContent();
+        }
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Layout methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Notify parent that the size of this object has changed.
+     */
+    override protected function notifySizeChanged():void
+    {
+        super.notifySizeChanged();
+
+        sizeFlexContent();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Flex content methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Utility function that prepares Flex content to be used as a child of
+     *  this component.
+     *  Set the content property rather than calling
+     *  this method directly.
+     */
+    protected function setFlexContent(value:IUIComponent):void
+    {
+        // Remove any existing content
+        if (flexContent)
+        {
+            removeChild(DisplayObject(flexContent));
+            flexContent = null;
+        }
+
+        // Add the new content
+        flexContent = value;
+        if (flexContent)
+        {
+            addChild(DisplayObject(flexContent));
+
+            var uiComponentClass:Class;
+
+            // Dynamically load the UIComponent class, but don't fail on error.
+            // This allows us to work in Flex (where UIComponent is defined), and
+            // in Flash (where it UIComponent is not defined).
+            try
+            {
+                uiComponentClass = Class(getDefinitionByName("mx.core::UIComponent"));
+            }
+            catch (e:Error)
+            {
+            }
+
+            // Do the Flex initialization
+            if (uiComponentClass)
+            {
+                // Find our parent UIComponent
+                var uicParent:Object;
+                var p:DisplayObjectContainer = parent;
+
+                while (p)
+                {
+                    if (p is uiComponentClass)
+                    {
+                        uicParent = p;
+                        break;
+                    }
+                    p = p.parent;
+                }
+
+                if (!uicParent)
+                {
+                    try
+                    {
+                        var applicationClass:Class = Class(getDefinitionByName("mx.core::ApplicationGlobals"));
+
+                        uicParent = applicationClass.application;
+                    }
+                    catch (e:Error)
+                    {
+                    }
+                }
+
+                if (!uicParent)
+                    return;
+
+                flexContent.initialize();
+
+                // The rest of this was copied from UIComponent.addingChild()...
+
+                // If the document property isn't already set on the child,
+                // set it to be the same as this component's document.
+                // The document setter will recursively set it on any
+                // descendants of the child that exist.
+                if (!flexContent.document)
+                {
+                    flexContent.document = uicParent.document;
+                }
+
+                if (flexContent is InteractiveObject)
+                    if (doubleClickEnabled)
+                        InteractiveObject(flexContent).doubleClickEnabled = true;
+
+
+                // Sets up the inheritingStyles and nonInheritingStyles objects
+                // and their proto chains so that getStyle() works.
+                // If this object already has some children,
+                // then reinitialize the children's proto chains.
+                if (flexContent is uiComponentClass)
+                {
+                    flexContent.mx_internal::_parent = this;
+
+                    var child:Object = flexContent;
+
+                    // Set the nestLevel of the child to be one greater
+                    // than the nestLevel of this component.
+                    // The nestLevel setter will recursively set it on any
+                    // descendants of the child that exist.
+                    child.nestLevel = uicParent.nestLevel + 1;
+
+                    // Temporarily set the _parent property of the child to the nearest UIComponent
+                    // parent. This allows inheriting styles to be picked up correctly.
+                    child.mx_internal::_parent = uicParent;
+                    child.regenerateStyleCache(true);
+                    child.styleChanged(null);
+                    child.notifyStyleChangeInChildren(null, true);
+                    child.mx_internal::initThemeColor();
+                    // Reset the _parent property.
+                    child.mx_internal::_parent = this;
+
+                    // Inform the component that it's style properties
+                    // have been fully initialized. Most components won't care,
+                    // but some need to react to even this early change.
+                    child.stylesInitialized();
+                 }
+
+                 _width *= scaleX;
+                 _height *= scaleY;
+                 scaleX = scaleY = 1;
+
+                 sizeFlexContent();
+            }
+        }
+    }
+
+    /**
+     *  @private
+     */
+    protected function sizeFlexContent():void
+    {
+        if (!flexContent)
+            return;
+
+        // Scale the flex content to the inverse of our nested scale
+        flexContent.scaleX = 1;
+        flexContent.scaleY = 1;
+
+        // Size the flex content to our size
+        var contentWidth:Number = _width;
+        var contentHeight:Number = _height;
+
+        if (flexContent.explicitWidth)
+            contentWidth = Math.min(contentWidth, flexContent.explicitWidth);
+
+        if (flexContent.explicitHeight)
+            contentHeight = Math.min(contentHeight, flexContent.explicitHeight);
+
+        flexContent.setActualSize(contentWidth, contentHeight);
+    }
+}
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 5101
Author:   gauravj@adobe.com
Date:     2009-02-27T05:22:45.887116Z

Log Message:
-----------
Update action script files with asdoc version tags.

QE Notes: None.
Doc Notes: Please review and update as necessary.
tests: checkintests

Modified Paths:
--------------
663 paths were modified

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

--- frameworks/projects/framework/src/mx/managers/IFocusManagerContainer.as
+++ frameworks/projects/framework/src/mx/managers/IFocusManagerContainer.as
@@ -22,6 +22,11 @@
  *  containers implement to host a FocusManager.
  *  The PopUpManager automatically installs a FocusManager
  *  in any IFocusManagerContainer it pops up.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public interface IFocusManagerContainer extends IEventDispatcher
 {
@@ -38,6 +43,11 @@
 	/**
 	 *  The FocusManager for this component.
 	 *  The FocusManager must be in a focusManager property.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	function get focusManager():IFocusManager;

@@ -52,6 +62,11 @@

 	/**
 	 *  @copy mx.core.UIComponent#systemManager
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	function get systemManager():ISystemManager;

@@ -71,6 +86,11 @@
 	 *
 	 *  @return true if the child object is a child of the container
 	 *  or the container itself; otherwise false.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	function contains(child:DisplayObject):Boolean;
 }


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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2010 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: 5099
Author:   gauravj@adobe.com
Date:     2009-02-27T03:43:02.639229Z

Log Message:
-----------
Update action script files with asdoc version tags.

QE Notes: None.
Doc Notes: Please review and update as necessary.
tests: checkintests

Modified Paths:
--------------
147 paths were modified

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

--- frameworks/projects/rpc/src/mx/messaging/messages/AcknowledgeMessage.as
+++ frameworks/projects/rpc/src/mx/messaging/messages/AcknowledgeMessage.as
@@ -22,6 +22,12 @@
  *  was sent previously.
  *  Every message sent within the messaging system must receive an
  *  acknowledgement.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion BlazeDS 4
+ *  @productversion LCDS 3
  */
 public class AcknowledgeMessage extends AsyncMessage implements ISmallMessage
 {
@@ -35,6 +41,12 @@
      *  Header name for the error hint header.
      *  Used to indicate that the acknowledgement is for a message that
      *  generated an error.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion BlazeDS 4
+     *  @productversion LCDS 3
      */
     public static const ERROR_HINT_HEADER:String = "DSErrorHint";

@@ -46,6 +58,12 @@

     /**
      *  Constructs an instance of an AcknowledgeMessage with an empty body and header.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion BlazeDS 4
+     *  @productversion LCDS 3
      */
     public function AcknowledgeMessage()
     {


Transferred from the Adobe Open Source Subversion Repository

Revision: 12546
Author:   rfrishbe@adobe.com
Date:     2009-12-04T19:55:24.662302Z

Log Message:
-----------
Fixing a null pointer exception that occurs sometimes.  Just adding a check in ScrubBar to make sure the thumb and track are around.  We do the same thing in the super.updateSkinDisplayList().

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

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/mediaClasses/ScrubBar.as

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

--- frameworks/projects/spark/src/spark/components/mediaClasses/ScrubBar.as
+++ frameworks/projects/spark/src/spark/components/mediaClasses/ScrubBar.as
@@ -188,6 +188,10 @@
     override protected function updateSkinDisplayList():void
     {
         super.updateSkinDisplayList();
+
+        if (!thumb || !track)
+            return;
+
         sizeLoadedRangeArea(calculateAreaSize(loadedRangeEnd));
         sizePlayedArea(calculateAreaSize(pendingValue));
     }


fixed editor bug where game settings wouldn't save and close until the checkboxes page was visited

--- flexEditor/src/org/arisgames/editor/view/GameDetailsEditorView.as
+++ flexEditor/src/org/arisgames/editor/view/GameDetailsEditorView.as
@@ -431,16 +431,19 @@
 		GameModel.getInstance().game.inventoryCap = inventoryCap.value;
 		GameModel.getInstance().game.description = description.text;

-		GameModel.getInstance().game.noteShareToMap = noteShareToMapCb.selected;
-		GameModel.getInstance().game.noteShareToBook = noteShareToBookCb.selected;
-		GameModel.getInstance().game.playerCreateTags = playerCreateTagsCb.selected;
-		GameModel.getInstance().game.allowtrading = allowtradingCb.selected;
-		GameModel.getInstance().game.isLocational = isLocationalCb.selected;
-		GameModel.getInstance().game.readyForPublic = readyForPublicCb.selected;
-		GameModel.getInstance().game.playerCreateComments = playerCreateCommentsCb.selected;
-		GameModel.getInstance().game.playerLikesNotes = playerLikesNotesCb.selected;
-		GameModel.getInstance().game.showPlayerOnMap = showPlayerOnMapCb.selected;
-
+		if(noteShareToMapCb) //if the checkbox page has loaded
+		{
+			GameModel.getInstance().game.noteShareToMap = noteShareToMapCb.selected;
+			GameModel.getInstance().game.noteShareToBook = noteShareToBookCb.selected;
+			GameModel.getInstance().game.playerCreateTags = playerCreateTagsCb.selected;
+			GameModel.getInstance().game.allowtrading = allowtradingCb.selected;
+			GameModel.getInstance().game.isLocational = isLocationalCb.selected;
+			GameModel.getInstance().game.readyForPublic = readyForPublicCb.selected;
+			GameModel.getInstance().game.playerCreateComments = playerCreateCommentsCb.selected;
+			GameModel.getInstance().game.playerLikesNotes = playerLikesNotesCb.selected;
+			GameModel.getInstance().game.showPlayerOnMap = showPlayerOnMapCb.selected;
+		}
+
 		var introNode:Node = introNodeCbo.selectedItem as Node;
 		GameModel.getInstance().game.introNodeId = introNode.nodeId;
 		var selectedNode:Node = completeNodeCbo.selectedItem as Node;


Transferred from the Adobe Open Source Subversion Repository

Revision: 19722
Author:   egeorgie@adobe.com
Date:     2011-01-12T00:53:24.336848Z

Log Message:
-----------
Fix popups/tooltips and scaling bugs:
Slider tooltip renders far above under 2.0 scaling - http://bugs.adobe.com/jira/browse/SDK-28833
Mobile HSliderSkin dataTip sometimes stops following the thumb all the way to the right edge - http://bugs.adobe.com/jira/browse/SDK-28762
When the app is scaled, DropDownList shows the list at wrong place - http://bugs.adobe.com/jira/browse/SDK-28818

In this change:
- update popup/tooltip positioning code to work with scaling.

QE notes:  make another test pass on tooltips/pop-ups
Doc notes:
Bugs: SDK-28833, SDK-28762, SDK-28818
Reviewer: Alex
Tests run: full mustella cyclone
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/dataGridClasses/DataGridItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/treeClasses/TreeItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/VSlider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/listClasses/TileListItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/ISystemManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/DragManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/utils/BitmapUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/DataGridEditor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/HSlider.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/utils/PopUpUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/utils/MatrixUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/listClasses/ListItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/mx/controls/dataGridClasses/FTEDataGridItemRenderer.as</path>

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

--- frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as
+++ frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as
@@ -501,7 +501,6 @@
             var appHeight:Number;
             var parentWidth:Number;
             var parentHeight:Number;
-            var s:Rectangle;            // the screen
             var rect:Rectangle;
             var clippingOffset:Point = new Point();
             var pt:Point;
@@ -522,17 +521,18 @@
             {
                 // The sandbox root is the top level root.
                 // The application width is just the screen width.
-                s = systemManager.screen;
-                appWidth = s.width;
-                appHeight = s.height;
+                var screen:Rectangle = systemManager.screen;
+                appWidth = screen.width;
+                appHeight = screen.height;
             }
             else
             {
                 rect = systemManager.getVisibleApplicationRect();
+                rect.topLeft = DisplayObject(systemManager).globalToLocal(rect.topLeft);
+                rect.bottomRight = DisplayObject(systemManager).globalToLocal(rect.bottomRight);

                 // Offset the top, left of the window to bring it into view.
-                clippingOffset = new Point(rect.x, rect.y);
-                clippingOffset = DisplayObject(systemManager).globalToLocal(clippingOffset);
+                clippingOffset = rect.topLeft.clone();
                 appWidth = rect.width;
                 appHeight = rect.height;
             }
@@ -720,7 +720,7 @@

         modalWindow.tabEnabled = false;

-        const s:Rectangle = sm.screen;
+        const screen:Rectangle = sm.screen;
         const g:Graphics = modalWindow.graphics;

         var c:Number = 0xFFFFFF;
@@ -744,7 +744,7 @@
         // trace("createModalWindow: drawing modal " + s);
         g.clear();
         g.beginFill(c, 100);
-        g.drawRect(s.x, s.y, s.width, s.height);
+        g.drawRect(screen.x, screen.y, screen.width, screen.height);
         g.endFill();

         if (hasEventListener("updateModalMask"))


FLEX-29002 Fix RTE/work around flash player accessibility issue.

--- frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as
+++ frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as
@@ -1478,7 +1478,12 @@
 				// This hides top-level document content from assistive technology.
 				sbRoot.document.accessibilityProperties.silent = true;

-				Accessibility.updateProperties();
+				try {
+					Accessibility.updateProperties();
+				}
+				catch(e:Error) {
+					// Flash Player issue causes hasAccessibility and active to be true when accessibility is turned off
+				}
 			}
 			return true;
 		}
@@ -1508,7 +1513,12 @@
 					sbRoot.document.accessibilityProperties.silent = false;
 				}

-				Accessibility.updateProperties();
+				try {
+					Accessibility.updateProperties();
+				}
+				catch(e:Error) {
+					// Flash Player issue on windows causes hasAccessibility and active to be true when accessibility is turned off
+				}
 			}
 			return true;
 		}
@@ -1545,12 +1555,14 @@
 			{
 				// If this is the only popUp, we should expose accessibility
 				// of the top-level system manager's document
-				sm.document.accessibilityProperties.silent = false;
+				if (sm.document.accessibilityProperties)
+					sm.document.accessibilityProperties.silent = false;

 				// We should also expose accessibility
 				// of the sandbox root's document.
-				var sbRoot:Object = popupData.systemManager.getSandboxRoot();
-				sbRoot.document.accessibilityProperties.silent = false;
+				var sbRoot:Object = popupData.systemManager.getSandboxRoot();
+				if (sbRoot.document.accessibilityProperties)
+					sbRoot.document.accessibilityProperties.silent = false;
 			}
 		}
 		else if (index > 0)
@@ -1559,7 +1571,8 @@
 			// of the underlying popUp
 			underneathPopUpData = popupInfo[index - 1];

-			underneathPopUpData.owner.accessibilityProperties.silent = false;
+			if (underneathPopUpData.owner.accessibilityProperties)
+				underneathPopUpData.owner.accessibilityProperties.silent = false;

 			// All the nested popUp's AccessibilityProperties
 			// changes should be handled by a single


Transferred from the Adobe Open Source Subversion Repository

Revision: 8478
Author:   smgilson@adobe.com
Date:     2009-07-09T16:00:34.803687Z

Log Message:
-----------
- Minor ASDoc cleanup to Spark effects

- Delete SWF and HTML files for ASDoc examples that should not have been checked in

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Move3D.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/RadioButtonGroupExample.swf</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Scale3D.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/RadioButtonExample.swf</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransform3D.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/RadioButtonGroupExample.html</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/RadioButtonExample.html</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Move.as</path>

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

--- frameworks/projects/spark/src/spark/effects/AnimateTransform3D.as
+++ frameworks/projects/spark/src/spark/effects/AnimateTransform3D.as
@@ -69,6 +69,7 @@
  *    focalLength="no default"
  *    projectionX="0"
  *    projectionY="0"
+ *    removeLocalProjectionWhenComplete="false"
  *  />
  *

  *
@@ -119,9 +120,12 @@
     //----------------------------------
     [Inspectable(category="General")]
     /**
-     *  @copy AnimateTransform#applyChangesPostLayout
-     *  The default value for this property is true for 3D effects,
-     *  because the Flex layout system ignores 3D transformation properties.
+     *  Used by the subclasses of AnimateTransform to specify
+     *  whether the effect changes transform values used by the layout
+     *  manager, or whether it changes values used after layout is run.
+     *  Because the Flex layout system ignores 3D transformation properties,
+     *  this class overrides the AnimateTransform.applyChangesPostLayout property
+     *  to set the default value to true for 3D effects.
      *
      *  @default true
      *
@@ -205,12 +209,27 @@
     public var autoCenterProjection:Boolean = true;

     /**
-     *  @copy flash.geom.PerspectiveProjection#fieldOfView
-     *
-     *
This property is only used when applyLocalProjection
-     *  is set to true.

-     *
-     *  @see #applyLocalProjection
+     *  Specifies an angle, as a degree between 0 and 180,
+     *  for the field of view in three dimensions.
+     *  This value determines how strong the perspective transformation and distortion apply to
+     *  a three-dimensional display object with a non-zero z-coordinate.
+     *
+     *
A degree close to 0 means that the screen's two-dimensional x- and y-coordinates are
+     *  roughly the same as the three-dimensional x-, y-, and z-coordinates with little or
+     *  no distortion. In other words, for a small angle, a display object moving down the z axis appears
+     *  to stay near the same size and moves little.

+     *
+     *
A value close to 180 degrees results in a fisheye lens effect: positions
+     *  with a z value smaller than 0 are magnified, while positions with a
+     *  z value larger than 0 are minimized. With a large angle, a display object
+     *  moving down the z axis appears to change size quickly and moves a great distance. If the field of view
+     *  is set to 0 or 180, nothing is seen on the screen.

+     *
+     *
This property is only used when applyLocalProjection
+     *  is set to true.

+     *
+     *  @see #applyLocalProjection
+     *  @see flash.geom.PerspectiveProjection
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -220,12 +239,17 @@
     public var fieldOfView:Number;

     /**
-     *  @copy flash.geom.PerspectiveProjection#focalLength
-     *
-     *
This property is only used when applyLocalProjection
-     *  is set to true.

-     *
-     *  @see #applyLocalProjection
+     *  The distance between the eye or the viewpoint's origin (0,0,0)
+     *  and the display object located  in the z axis. During the perspective transformation,
+     *  the focalLength is calculated dynamically
+     *  using the angle of the field of view and the stage's aspect ratio (stage width divided by
+     *  stage height).
+     *
+     *
This property is only used when applyLocalProjection
+     *  is set to true.

+     *
+     *  @see #applyLocalProjection
+     *  @see flash.geom.PerspectiveProjection
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -288,7 +312,7 @@
      * @private
      *
      * This is where we create the single instance and/or feed extra
-     * MotionPath information (from othe transform-related effects) into the
+     * MotionPath information (from the transform-related effects) into the
      * single transform effect instance.
      */
     override protected function initInstance(instance:IEffectInstance):void


Fix movies occasionally landing on lastFrame + 1

--- runtime/src/main/as/flump/display/Movie.as
+++ runtime/src/main/as/flump/display/Movie.as
@@ -135,8 +135,13 @@
         _playTime += dt;
         var actualPlaytime :Number = _playTime;
         if (_playTime >= _duration) _playTime = _playTime % _duration;
-        var newFrame :int = int(_playTime * _frameRate);
+
+        // If _playTime is very close to _duration, rounding error can cause us to
+        // land on lastFrame + 1. Protect against that.
+        var newFrame :int = Math.min(int(_playTime * _frameRate), _frames - 1);
+
         const overDuration :Boolean = dt >= _duration;
+
         // If the update crosses or goes to the stopFrame, go to the stop frame, stop the movie and
         // clear it
         if (_stopFrame != NO_FRAME) {