Transferred from the Adobe Open Source Subversion Repository

Revision: 6122
Author:   chaase@adobe.com
Date:     2009-04-10T14:30:17.762458Z

Log Message:
-----------
Various refactorings/renamings/changes from effects PARB review.

QE Notes: mx/effects and spark/effects currently broken (and disabled) due to these API changes. Matt is fixing.
Doc Notes: None
Bugs:
Reviewer: Hans
tests: checkintests, mustella tests/ListDataEffects

Modified Paths:
--------------
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/EaseInOut.as" copyfrom-rev="5944" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/EaseInOutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/CompositeEffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformMove.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/EaseInOut.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/EasingFraction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/Power.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/EffectEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/ParallelInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/TweenEffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/FadeInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Animate.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/RepeatBehavior.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/spark-manifest.xml</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/interpolation/NumberArrayInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformScale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/IEffect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/Animate3DInstance.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimationProperty.as" copyfrom-rev="5944" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/SimpleMotionPath.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateColorInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateShaderTransitionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Resize.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateFilterInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/Sine.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/Rotate3DInstance.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/events/AnimationEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/interpolation/ArrayInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/IEffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/RotateInstance.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/IAnimationTarget.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/ResizeInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/MotionPath.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimationProperty.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/MoveInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateTransformInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformRotate.as</path>

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

--- frameworks/projects/spark/src/spark/effects/supportClasses/AnimateInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/AnimateInstance.as
@@ -19,17 +19,18 @@
 import mx.core.UIComponent;
 import mx.core.mx_internal;
 import mx.effects.EffectInstance;
+import mx.events.EffectEvent;
 import mx.resources.IResourceManager;
 import mx.resources.ResourceManager;
 import mx.styles.IStyleClient;

-import spark.effects.AnimationProperty;
 import spark.effects.KeyFrame;
 import spark.effects.MotionPath;
+import spark.effects.SimpleMotionPath;
 import spark.effects.animation.Animation;
+import spark.effects.animation.IAnimationTarget;
 import spark.effects.easing.IEaser;
 import spark.effects.interpolation.IInterpolator;
-import spark.events.AnimationEvent;

 use namespace mx_internal;

@@ -49,7 +50,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-public class AnimateInstance extends EffectInstance
+public class AnimateInstance extends EffectInstance implements IAnimationTarget
 {
     public var animation:Animation;

@@ -80,13 +81,20 @@
     /**
      *  @private.
      *  Used internally to hold the value of the new playhead position
-     *  if the tween doesn't currently exist.
+     *  if the animation doesn't currently exist.
      */
     private var _seekTime:Number = 0;

     private var reverseAnimation:Boolean;

     private var needsRemoval:Boolean;
+
+    /**
+     * @private
+     * Track number of update listeners for optimization purposes
+     */
+    private var numUpdateListeners:int = 0;
+

     /**
      *  @private
@@ -109,9 +117,9 @@
     //
     //--------------------------------------------------------------------------

-    private var _animationProperties:Array;
-    /**
-     * An array of AnimationProperty objects, each of which holds the
+    private var _motionPaths:Array;
+    /**
+     * An array of SimpleMotionPath objects, each of which holds the
      * name of the property being animated and the values that the property
      * will take on during the animation.
      *
@@ -120,33 +128,20 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public function get animationProperties():Array
-    {
-        return _animationProperties;
-    }
-    public function set animationProperties(value:Array):void
+    public function get motionPaths():Array
+    {
+        return _motionPaths;
+    }
+    public function set motionPaths(value:Array):void
     {
         // Only set the list to the given value if we have a
         // null list to begin with. Otherwise, we've already
         // set up the list once and don't need to do it again
         // (for example, in a repeating effect).
-        if (!_animationProperties)
-            _animationProperties = value;
-    }
-
-    /**
-     * This flag indicates whether values should be rounded before set on
-     * the targets. This can be useful in situations where values resolve to
-     * pixel coordinates and snapping to pixels is desired over landing
-     * on fractional pixels.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    protected var roundValues:Boolean;
-
+        if (!_motionPaths)
+            _motionPaths = value;
+    }
+
     /**
      * This flag indicates whether a subclass would like their target to
      * be automatically kept around during a transition and removed when it
@@ -236,7 +231,7 @@
     //----------------------------------

     /**
-     *  @copy mx.effects.IEffectInstance#playheadTime
+     *  @inheritDoc
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -245,10 +240,19 @@
      */
     override public function get playheadTime():Number
     {
+        return animation ? animation.playheadTime : 0;
+    }
+    /**
+     * @private
+     */
+    override public function set playheadTime(value:Number):void
+    {
         if (animation)
-            return animation.elapsedTime;
-        return 0;
-    }
+            animation.seek(value, true);
+        else
+            _seekTime = value;
+    }
+

     /**
      *  @private
@@ -295,25 +299,6 @@

         reverseAnimation = !reverseAnimation;
     }
-
-    /**
-     *  Advances the effect to the specified position.
-     *
-     *  @param playheadTime The position, in milliseconds, between 0
-     *  and the value of the duration property.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    override public function seek(playheadTime:Number):void
-    {
-        if (animation)
-            animation.seek(playheadTime, true);
-        else
-            _seekTime = playheadTime;
-    }

     /**
      *  Interrupts an effect that is currently playing,
@@ -387,7 +372,7 @@
     {
         super.play();

-        if (!animationProperties || animationProperties.length == 0)
+        if (!motionPaths || motionPaths.length == 0)
         {
             // nothing to do; at least schedule the effect to end after
             // the specified duration
@@ -397,7 +382,7 @@
             return;
         }

-        isStyleMap = new Array(animationProperties.length);
+        isStyleMap = new Array(motionPaths.length);

         // TODO (chaase): avoid setting up animations on properties whose
         // from/to values are the same. Not worth the cycles, but also want
@@ -405,13 +390,13 @@
         // values
         var i:int;
         var j:int;
-        for (i = 0; i < animationProperties.length; ++i)
-        {
-            var mp:MotionPath = MotionPath(animationProperties[i]);
+        for (i = 0; i < motionPaths.length; ++i)
+        {
+            var mp:MotionPath = MotionPath(motionPaths[i]);
             // TODO (chaase): should we push this keyframe-init logic
             // into the MotionPath class instead?

-            var keyframes:Array = animationProperties[i].keyframes;
+            var keyframes:Array = motionPaths[i].keyframes;
             if (!keyframes)
                 continue;
             // Create an initial (time==0) value if necessary
@@ -425,7 +410,7 @@
             // adjust effect duration to be the max of all MotionPath keyframe times
             // TODO (chaase): Currently we do not adjust *down* for smaller duration
             // MotionPaths. This is because we do not distinguish between
-            // AnimationProperty objects (which are created with fake durations of 1,
+            // SimpleMotionPath objects (which are created with fake durations of 1,
             // knowing that they will derive their duration from their effects) and
             // actual keyframe-based MotionPaths.
             for (j = 0; j < keyframes.length; ++j)
@@ -435,17 +420,13 @@
                     duration = Math.max(duration, keyframes[j].time);

         }
-        for (i = 0; i < animationProperties.length; ++i)
-            animationProperties[i].scaleKeyframes(duration);
+        for (i = 0; i < motionPaths.length; ++i)
+            motionPaths[i].scaleKeyframes(duration);

         animation = new Animation(duration);
-        animation.animationProperties = animationProperties;
-
-        animation.addEventListener(AnimationEvent.ANIMATION_START, startHandler);
-        animation.addEventListener(AnimationEvent.ANIMATION_UPDATE, updateHandler);
-        animation.addEventListener(AnimationEvent.ANIMATION_REPEAT, repeatHandler);
-        animation.addEventListener(AnimationEvent.ANIMATION_END, endHandler);
-
+        animation.animationTarget = this;
+        animation.motionPaths = motionPaths;
+
         if (_seekTime > 0)
             animation.seek(_seekTime);
         if (reverseAnimation)
@@ -467,7 +448,7 @@

     /**
      * Set the values in the given array on the properties held in our
-     * animationProperties array. This is called by the update and end
+     * motionPaths array. This is called by the update and end
      * functions, which are called by the Animation during the animation.
      *
      *  @langversion 3.0
@@ -477,8 +458,11 @@
      */
     protected function applyValues(anim:Animation):void
     {
-        for (var i:int = 0; i < animationProperties.length; ++i)
-            setValue(animationProperties[i].property, anim.currentValue[i]);
+        for (var i:int = 0; i < motionPaths.length; ++i)
+        {
+            var prop:String = motionPaths[i].property;
+            setValue(prop, anim.currentValue[prop]);
+        }
     }

     // TODO (chaase): This function appears in multiple places. Maybe
@@ -497,7 +481,7 @@
     }

     /**
-     * Walk the animationProperties looking for null values. A null indicates
+     * Walk the motionPaths looking for null values. A null indicates
      * that the value should be replaced by the current value or one that
      * is calculated from the other value and a supplied delta value.
      *
@@ -513,10 +497,10 @@
         var changedValues:Boolean = false;
         var j:int;
         var prevValue:Object;
-        for (var i:int = 0; i < animationProperties.length; ++i)
+        for (var i:int = 0; i < motionPaths.length; ++i)
         {
             var motionPath:MotionPath =
-                MotionPath(animationProperties[i]);
+                MotionPath(motionPaths[i]);
             // set the first value (if invalid) to the current value
             // in the target
             var keyframes:Array = motionPath.keyframes;
@@ -579,7 +563,7 @@

     /**
      * This function is called by subclasses during the play() function
-     * to add an animation to the current set of animationProperties.
+     * to add an animation to the current set of motionPaths.
      * The animation will be set up on the named constraint if the constraint
      * is in the propertyChanges array (which is only true during
      * transitions for properties/styles exposed by the effect) and the
@@ -593,12 +577,12 @@
             startVal !== null && endVal !== null &&
             startVal != endVal)
         {
-            animationProperties.push(new AnimationProperty(constraintName, startVal, endVal));
-        }
-    }
-
-    /**
-     * Handles start events from the animation.
+            motionPaths.push(new SimpleMotionPath(constraintName, startVal, endVal));
+        }
+    }
+
+    /**
+     * Called internally to handle start events for the animation.
      * If you override this method, ensure that you call the super method.
      *
      *  @langversion 3.0
@@ -606,7 +590,7 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    protected function startHandler(event:AnimationEvent):void
+    public function animationStart(animation:Animation):void
     {
         // Wait until the underlying Animation actually starts (after
         // any startDelay) to cache constraints and disable layout. This
@@ -617,19 +601,55 @@
         if (disableLayout)
             setupParentLayout(false);

-        var anim:Animation = Animation(event.target);
         finalizeValues();

         // TODO (chaase): Consider putting AnimateInstance (and subclass's)
         // play() functionality (the setup and playing of the Animation object)
         // into startEffect(), calling play() from here, and not overriding
         // play() at all.
-
+    }
+
+    /**
+     * Called internally to handle update events for the animation.
+     * If you override this method, ensure that you call the super method.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function animationUpdate(animation:Animation):void
+    {
+        applyValues(animation);
+        if (numUpdateListeners > 0)
+        {
+            // Only bother dispatching this event if there are listeners. This avoids
+            // unnecessary overhead for the common case of no listeners on this frequent
+            // event
+            var event:EffectEvent = new EffectEvent(EffectEvent.EFFECT_UPDATE);
+            event.effectInstance = this;
+            dispatchEvent(event);
+        }
+    }
+
+    /**
+     * Called internally to handle repeat events for the animation.
+     * If you override this method, ensure that you call the super method.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function animationRepeat(animation:Animation):void
+    {
+        var event:EffectEvent = new EffectEvent(EffectEvent.EFFECT_REPEAT);
+        event.effectInstance = this;
         dispatchEvent(event);
-    }
-
-    /**
-     * Handles update events from the animation.
+    }
+
+    /**
+     * Called internally to handle end events for the animation.
      * If you override this method, ensure that you call the super method.
      *
      *  @langversion 3.0
@@ -637,64 +657,59 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    protected function updateHandler(event:AnimationEvent):void
-    {
-        applyValues(Animation(event.target));
-        dispatchEvent(event);
-    }
-
-    /**
-     * Handles repeat events from the animation.
-     * If you override this method, ensure that you call the super method.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    protected function repeatHandler(event:AnimationEvent):void
-    {
-        dispatchEvent(event);
-    }
-
-    private function noopAnimationHandler(event:TimerEvent):void
-    {
-        finishEffect();
-    }
-
-    /**
-     *  @copy mx.effects.IEffectInstance#finishEffect()
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    override public function finishEffect():void
-    {
-        if (autoRemoveTarget)
-            removeDisappearingTarget();
-        super.finishEffect();
-    }
-
-    /**
-     * Handles the end event from the animation. The value here is an Array of
-     * values, one for each 'property' in our animationProperties.
-     * If you override this method, ensure that you call the super method.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    protected function endHandler(event:AnimationEvent):void
-    {
-        dispatchEvent(event);
+    public function animationEnd(animation:Animation):void
+    {
         if (disableConstraints)
             reenableConstraints();
         if (disableLayout)
             setupParentLayout(true);
         finishEffect();
+    }
+
+    private function noopAnimationHandler(event:TimerEvent):void
+    {
+        finishEffect();
+    }
+
+    /**
+     * @private
+     * Track number of listeners to update event for optimization purposes
+     */
+    override public function addEventListener(type:String, listener:Function,
+        useCapture:Boolean=false, priority:int=0,
+        useWeakReference:Boolean=false):void
+    {
+        super.addEventListener(type, listener, useCapture, priority,
+            useWeakReference);
+        if (type == EffectEvent.EFFECT_UPDATE)
+            ++numUpdateListeners;
+    }
+
+    /**
+     * @private
+     * Track number of listeners to update event for optimization purposes
+     */
+    override public function removeEventListener(type:String, listener:Function,
+        useCapture:Boolean=false):void
+    {
+        super.removeEventListener(type, listener, useCapture);
+        if (type == EffectEvent.EFFECT_UPDATE)
+            --numUpdateListeners;
+    }
+
+    /**
+     *  @copy mx.effects.IEffectInstance#finishEffect()
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    override public function finishEffect():void
+    {
+        if (autoRemoveTarget)
+            removeDisappearingTarget();
+        super.finishEffect();
     }

     /**
@@ -857,7 +872,7 @@
     /**
      * Utility function to handle situation where values may be queried or
      * set on the target prior to completely setting up the effect's
-     * animationProperties data values (from which the styleMap is created)
+     * motionPaths data values (from which the styleMap is created)
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -898,9 +913,6 @@
      */
     protected function setValue(property:String, value:Object):void
     {
-        if (roundValues && (value is Number))
-            value = Math.round(Number(value));
-
         // TODO (chaase): Find a better way to set this up just once
         setupStyleMapEntry(property);
         if (!isStyleMap[property])


XHTMLView removed commented deprecated code

--- src/metafas3/XHTMLView.as
+++ src/metafas3/XHTMLView.as
@@ -276,9 +276,6 @@
 					if (this[matches[1]] == null) this[matches[1]] = (new ReactiveResource());
 					// set id to object_property
 					options.name = id = matches[1] + '_' + matches[2];
-					// allow <input type="hidden"> fields to assign model properties
-					// DEPRECATED: moved to HiddenInputHelper#bind_to
-					// if (node == 'input' && options.type == 'hidden') this[matches[1]][matches[2]] = options.value;
 				}
 			}


Transferred from the Adobe Open Source Subversion Repository

Revision: 19328
Author:   mhorn@adobe.com
Date:     2010-12-13T20:45:00.405533Z

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/NavigationAngledButtonSkin.as</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/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/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/TabbedViewNavigatorApplicationSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderDataTip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderTrackSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ActionBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/SelectableButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/CheckBoxSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/RadioButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.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/mobiletheme/src/spark/skins/mobile/NavigationButtonSkin.as</path>

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

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

+    /**
+     *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     *
+     */
     public function RadioButtonSkin()
     {
         super();


fix typo

fix typo

--- src/aerys/minko/type/Signal.as
+++ src/aerys/minko/type/Signal.as
@@ -26,7 +26,7 @@
 		public function add(callback : Function) : void
 		{
             if (_callbacks.indexOf(callback) >= 0)
-                throw new Error('The same callback cannot be adde twice.');
+                throw new Error('The same callback cannot be added twice.');

 			if (_executed)
 			{


Update Signal.as

Update Signal.as

--- src/aerys/minko/type/Signal.as
+++ src/aerys/minko/type/Signal.as
@@ -36,13 +36,11 @@
 			_name = name;
             _enabled = enabled;
 			_disableWhenNoCallbacks = disableWhenNoCallbacks;
-
-            _callbacks = new <Function>[];
 		}

 		public function add(callback : Function) : void
 		{
-            if (_callbacks.indexOf(callback) >= 0)
+            if (_callbacks && _callbacks.indexOf(callback) >= 0)
             {
                 var removeIndex : int = _toRemove ? _toRemove.indexOf(callback) : -1;

@@ -71,7 +69,8 @@
 				return ;
 			}

-			_callbacks[_numCallbacks] = callback;
+			if (_callbacks) _callbacks[_numCallbacks] = callback;
+			else _callbacks = new <Function>[callback];
 			++_numCallbacks;

 			if (_numCallbacks == 1 && _disableWhenNoCallbacks)
@@ -80,7 +79,7 @@

 		public function remove(callback : Function) : void
 		{
-			var index : int = _callbacks.indexOf(callback);
+			var index : int = (_callbacks ? _callbacks.indexOf(callback) : -1);

 			if (index < 0)
             {
@@ -119,7 +118,7 @@

 		public function hasCallback(callback : Function) : Boolean
 		{
-			return _callbacks.indexOf(callback) >= 0;
+			return _callbacks && _callbacks.indexOf(callback) >= 0;
 		}

 		public function execute(...params) : void
@@ -143,4 +142,4 @@
 			}
 		}
 	}
-}+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 11318
Author:   aharui@adobe.com
Date:     2009-10-30T18:36:48.933086Z

Log Message:
-----------
Block documentation of controlBar properties in WindowedApplication

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Darrell
API Change: yes
Is noteworthy for integration: No
tests: checkintests

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/WindowedApplication.as

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

--- frameworks/projects/airspark/src/spark/components/WindowedApplication.as
+++ frameworks/projects/airspark/src/spark/components/WindowedApplication.as
@@ -304,6 +304,10 @@
 //  Excluded APIs
 //--------------------------------------

+[Exclude(name="controlBarContent", kind="property")]
+[Exclude(name="controlBarGroup", kind="property")]
+[Exclude(name="controlBarLayout", kind="property")]
+[Exclude(name="controlBarVisible", kind="property")]
 [Exclude(name="moveEffect", kind="effect")]

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 8420
Author:   dloverin@adobe.com
Date:     2009-07-07T14:27:05.571766Z

Log Message:
-----------
Remove showGripper and showTitleBar from ASDoc.

Removed the references to showGripper and showTitleBar in the Spark WindowedApplication and Spark Window classes.

QE Notes: none.
Doc Notes: none.
Bugs: SDK-22112
Reviewer:
tests: checkintests

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

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

--- frameworks/projects/airspark/src/spark/components/WindowedApplication.as
+++ frameworks/projects/airspark/src/spark/components/WindowedApplication.as
@@ -355,9 +355,7 @@
  *    menu="null"
  *    minHeight="100"
  *    minWidth="100"
- *    showGripper="true"
  *    showStatusBar="true"
- *    showTitleBar="true"
  *    status=""
  *    systemTrayIconMenu="null"
  *    title=""


Transferred from the Adobe Open Source Subversion Repository

Revision: 17970
Author:   egeorgie@adobe.com
Date:     2010-09-30T21:32:24.300370Z

Log Message:
-----------
Fix SDK-27642 Unnecessary Measure for Mobile Programmatic Skins

In this change:
- introduce new protected APIs in MobileSkin, MobileItemRenderer for resizing and positioning elements.
- update Mobile skin code to use new APIs instead of setting explicitly x, y, width, height
- update FXG assetes to make elements pixel aligned
- update Mobile skin code to assume FXG assest are always pixel aligned

QE notes: Verify skins look as expected; mobile item renderers layout as expected
Doc notes: None.
Bugs: SDK-27642
Reviewer: Glenn, Jason S, Jason SJ, Ryan
Tests run: full mobile mustella
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarTrackSkin.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="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/src/spark/skins/mobile/assets/CheckBox_upSelected.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as</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/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarThumbSkin.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/mobilecomponents/src/spark/components/MobileIconItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/Button_up.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarTrackSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/CheckBox_downSelected.fxg</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/CheckBox_up.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/NavigationButtonSkin.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/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as
@@ -63,14 +63,13 @@
     override protected function measure():void
     {
         // !! should use something better here
-        hostComponent.measuredWidth = 40;
-        hostComponent.measuredHeight = 8;
+        measuredWidth = 40;
+        measuredHeight = 8;
     }

     override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
     {
-        track.width = unscaledWidth;
-        track.height = unscaledHeight;
+        resizePart(track, unscaledWidth, unscaledHeight);
     }
 }
 }


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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 7376
Author:   hmuller@adobe.com
Date:     2009-05-28T18:25:57.415529Z

Log Message:
-----------
Bug fixes for DropDownList, virtualized TileLayout.  Refactoring of the "cooperative layout"
code in TrackBase.

QE Notes:
Doc Notes:
Bugs: sdk-21459, sdk-21250, sdk-20864
Reviewer: Ryan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VideoPlayerScrubBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/TrackBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/supportClasses/LinearLayoutVector.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableDataContainer.as</path>

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

--- frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as
+++ frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as
@@ -854,6 +854,7 @@
             dataGroupProperties = newDataGroupProperties;

             dataGroup.dataProvider = null;
+            dataGroup.layout = null;
         }
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 4005
Author:   rfrishbe@adobe.com
Date:     2008-11-04T01:07:38.597640Z

Log Message:
-----------
Change in the way item renderers lay them selves out.  Before we were using 100% width and 100% height.  Now, we're using horizontalAlign and verticalAlign to accomplish this, which are properties added to VerticalLayout and HorizontalLayout, respectively.  horizontalAlign takes values "left", "center", "right", "justify", and "contentJustify".  "justify" sizes all elements to the width of the component.  "contentJustify" sizes all elements to the size of the largest child (with a minimum of the width of the parent component).  Similar, verticalAlign takes "top", "middle", "bottom", "justify", and "contentJustify".

The default List skin sets the VerticalLayout's horizontalAlign to "contentJustify."  Most lists should use "contentJustify" or "justify" if you don't want scrollbars.  If you want to change your list to a horizontal list, you change the layout to a horizontal layout.  However, you must set the verticalAlign property on the horizontal layout correctly--otherwise it'll default to "top" and probably won't do what you want.

Ran checkintests and the following mustella tests: layout, list, Group, DataGroup, FxDataContainer, and FxContainer.  Some DataGroup tests were failing but should be because of an unrelated, local change.  All other tests are passing.

QE Notes: Failing tests are excluded.  Please update them (I think all just need to add verticalAlign="contentJustify" in the horizontal layout case) and re-include them.  Also, please write tests for this new functionality.
Doc Notes: None
Bugs: SDK-17198
Reviewer: Evtim

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/ItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxListSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxDataContainerSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/HorizontalAlign.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/VerticalAlign.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/flex4test.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutBase.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as
+++ frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as
@@ -340,6 +340,21 @@
     }

     /**
+     *  Convenience function for subclasses that invalidates the
+     *  target's displayList if the target is non-null.
+     *
+     *  @see mx.core.UIComponent#invalidateDisplayList
+     */
+    protected function invalidateTargetDisplayList():void
+    {
+        var g:GroupBase = target;
+        if (!g)
+            return;
+
+        g.invalidateDisplayList();
+    }
+
+    /**
      *  @copy mx.core.UIComponent#measure
      */
     public function measure():void


- change: The Image control now supports explicit dimensions by scaling the loaded image accordingly

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

--- src/reprise/controls/html/Image.as
+++ src/reprise/controls/html/Image.as
@@ -11,14 +11,17 @@

 package reprise.controls.html
 {
-	import flash.display.Bitmap;
-	import flash.display.BitmapData;
-	import flash.events.Event;
-
+	import reprise.core.reprise;
 	import reprise.events.DisplayEvent;
 	import reprise.events.ResourceEvent;
 	import reprise.external.BitmapResource;
-	import reprise.ui.UIComponent;
+	import reprise.ui.UIComponent;
+
+	import flash.display.Bitmap;
+	import flash.display.BitmapData;
+	import flash.events.Event;
+
+	use namespace reprise;

 	public class Image extends UIComponent
 	{
@@ -83,13 +86,22 @@
 				m_imageLoader.priority = value;
 			}
 		}
-
+
 		public function setSmoothing(enabled : Boolean) : void
 		{
 			//TODO: found out how to enable smoothing
 			m_smoothing = enabled;
 		}

+		public function bitmapData() : BitmapData
+		{
+			if (!m_image)
+			{
+				return null;
+			}
+			return m_image.bitmapData;
+		}
+

 		/***************************************************************************
 		*							protected methods							   *
@@ -116,12 +128,54 @@
 			{
 				m_lowerContentDisplay.removeChild(m_image);
 			}
-			m_image = new Bitmap(BitmapData(m_imageLoader.content()));
+			m_image = new Bitmap(BitmapData(m_imageLoader.content()), 'auto', m_smoothing);
 			m_lowerContentDisplay.addChild(m_image);
 			invalidate();
 			dispatchEvent(new DisplayEvent(DisplayEvent.LOAD_COMPLETE));
 		}
+
+		override protected function applyInFlowChildPositions() : void
+		{
+			if (m_loaded)
+			{
+				if (!m_imageDisplayed)
+				{
+					m_imageDisplayed = true;
+					m_lowerContentDisplay.visible = true;
+				}
+				m_image.x = m_currentStyles.paddingLeft;
+				m_image.y = m_currentStyles.paddingTop;
+				if (m_autoFlags.height)
+				{
+					m_image.height = BitmapData(m_imageLoader.content()).height;
+				}
+				else
+				{
+					m_image.height = m_currentStyles.height;
+				}
+				if (m_autoFlags.width)
+				{
+					m_image.width = BitmapData(m_imageLoader.content()).width;
+				}
+				else
+				{
+					m_image.width = m_currentStyles.width;
+				}
+			}
+		}
+		override protected function applyOutOfFlowChildPositions() : void
+		{
+		}

+		override reprise function innerWidth() : int
+		{
+			return m_contentBoxWidth;
+		}
+		override reprise function innerHeight() : int
+		{
+			return m_contentBoxHeight;
+		}
+
 		protected override function measure() : void
 		{
 			if (!(m_imageLoader && m_imageLoader.didSucceed()))
@@ -130,19 +184,8 @@
 				m_intrinsicHeight = 0;
 				return;
 			}
-			m_intrinsicWidth = m_image.width;
-			m_intrinsicHeight = m_image.height;
-		}
-
-		protected override function draw() : void
-		{
-			if (m_loaded && !m_imageDisplayed)
-			{
-				m_image.x = m_currentStyles.paddingLeft || 0;
-				m_image.y = m_currentStyles.paddingTop || 0;
-				m_imageDisplayed = true;
-				m_lowerContentDisplay.visible = true;
-			}
+			m_intrinsicWidth = BitmapData(m_imageLoader.content()).width;
+			m_intrinsicHeight = BitmapData(m_imageLoader.content()).height;
 		}
 	}
 }


修正如果列表使用了居中或居右对齐后，无法点中item的bug。

修正如果列表使用了居中或居右对齐后，无法点中item的bug。

--- source/fairygui/ScrollPane.as
+++ source/fairygui/ScrollPane.as
@@ -574,7 +574,6 @@
 				if(_alignContainer==null)
 				{
 					_alignContainer = new Sprite();
-					_alignContainer.mouseEnabled = false;
 					_maskContainer.addChild(_alignContainer);
 					_alignContainer.addChild(_container);
 				}


Fix return value in getStoredPlayerPhoto

--- actionscript/src/com/sticksports/nativeExtensions/gameCenter/GameCenter.as
+++ actionscript/src/com/sticksports/nativeExtensions/gameCenter/GameCenter.as
@@ -350,7 +350,7 @@
 				var loadingPhoto:BitmapData = _loadingPlayerPhotos[id];
 				try {
 					var ret:Boolean = getStoredPlayerPhoto(id, loadingPhoto);
-					if(true) { // XXX why isn't the ANE returning true?
+					if(ret) {
 						_loadPlayerPhotoCompleteSignals[id].dispatch(loadingPhoto);
 					} else {
 						_loadPlayerPhotoFailedSignals[id].dispatch();
@@ -401,9 +401,9 @@
 			}
 		}

-		private static function getStoredPlayerPhoto(key:String, inBMD:BitmapData) : void
-		{
-			extensionContext.call( NativeMethods.getStoredPlayerPhoto, key, inBMD );
+		private static function getStoredPlayerPhoto(key:String, inBMD:BitmapData) : Boolean
+		{
+			return extensionContext.call( NativeMethods.getStoredPlayerPhoto, key, inBMD );
 		}

 		private static function getStoredLeaderboard( key : String ) : GCLeaderboard


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package
 {


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


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

--- frameworks/projects/framework/src/mx/binding/utils/ChangeWatcher.as
+++ frameworks/projects/framework/src/mx/binding/utils/ChangeWatcher.as
@@ -0,0 +1,433 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2006-2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.binding.utils
+{
+
+import flash.events.IEventDispatcher;
+import flash.events.Event;
+import mx.core.EventPriority;
+import mx.binding.BindabilityInfo;
+import mx.events.PropertyChangeEvent;
+import mx.utils.DescribeTypeCache;
+
+/**
+ *  The ChangeWatcher class defines utility methods
+ *  that you can use with bindable Flex properties.
+ *  These methods let you define an event handler that is executed
+ *  whenever a bindable property is updated.
+ */
+public class ChangeWatcher
+{
+    include "../../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Creates and starts a ChangeWatcher instance.
+     *  A single ChangeWatcher instance can watch one property,
+     *  or a property chain.
+     *  A property chain is a sequence of properties accessible from
+     *  a host object.
+     *  For example, the expression
+     *  obj.a.b.c contains the property chain (a, b, c).
+     *
+     *  @param host The object that hosts the property or property chain
+     *  to be watched.
+     *  You can use the use the reset() method to change
+     *  the value of the host argument after creating
+     *  the ChangeWatcher instance.
+     *
+     *  @param chain A value specifying the property or chain to be watched.
+     *  Legal values are:
+     *

+     *
A String containing the name of a public bindable property
+     *    of the host object.

+     *
+     *
An Object in the form:
+     *    { name: property name, getter: function(host) { return host[name] } }.
+     *    The Object contains the name of a public bindable property,
+     *    and a function which serves as a getter for that property.

+     *
+     *
A non-empty Array containing any combination
+     *    of the first two options.
+     *    This represents a chain of bindable properties
+     *    accessible from the host.
+     *    For example, to watch the property host.a.b.c,
+     *    call the method as: watch(host, ["a","b","c"], ...).

+     *

+     *
+     *
Note: The property or properties named in the chain argument
+     *  must be public, because the describeType() method suppresses all information
+     *  about non-public properties, including the bindability metadata
+     *  that ChangeWatcher scans to find the change events that are exposed
+     *  for a given property.
+     *  However, the getter function supplied when using the { name, getter }
+     *  argument form described above can be used to associate an arbitrary
+     *  computed value with the named (public) property.

+     *
+     *  @param handler An event handler function called when the value of the
+     *  watched property (or any property in a watched chain) is modified.
+     *  The modification is signaled when any host object in the watcher
+     *  chain dispatches the event that has been specified in that host object's
+     *  [Bindable] metadata tag for the corresponding watched property.
+     *  The default event is named propertyChange.
+     *
+     *
The event object dispatched by the bindable property is passed
+     *  to this handler function without modification.
+     *  By default, Flex dispatches an event object of type PropertyChangeEvent.
+     *  However, you can define your own event type when you use the
+     *  [Bindable] metadata tag to define a bindable property.

+     *
+     *  @param commitOnly Set to true if the handler should be
+     *  called only on committing change events;
+     *  set to false if the handler should be called on both
+     *  committing and non-committing change events.
+     *  Note: the presence of non-committing change events for a property is
+     *  indicated by the [NonCommittingChangeEvent(<event-name>)] metadata tag.
+     *  Typically these tags are used to indicate fine-grained value changes,
+     *  such as modifications in a text field prior to confirmation.
+     *
+     *  @return The ChangeWatcher instance, if at least one property name has
+     *  been specified to the chain argument; null otherwise.
+     *  Note that the returned watcher is not guaranteed to have successfully
+     *  discovered and attached itself to change events, since none may have
+     *  been exposed on the given property or chain by the host.
+     *  You can use the isWatching() method to determine the
+     *  watcher's state.
+     *
+     *  @see mx.events.PropertyChangeEvent
+     */
+    public static function watch(host:Object, chain:Object,
+                                 handler:Function,
+                                 commitOnly:Boolean = false):ChangeWatcher
+    {
+        if (!(chain is Array))
+            chain = [ chain ];
+
+        if (chain.length > 0)
+        {
+            var w:ChangeWatcher =
+                new ChangeWatcher(chain[0], handler, commitOnly,
+                    watch(null, chain.slice(1), handler, commitOnly));
+            w.reset(host);
+            return w;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    /**
+     *  Lets you determine if the host exposes a data-binding event
+     *  on the property.
+     *
+     *  @param host The host of the property.
+     *  See the watch() method for more information.
+     *
+     *  @param name The name of the property, or property chain.
+     *  See the watch() method for more information.
+     *
+     *  @param commitOnly Set to true if the handler
+     *  should be called only on committing change events.
+     *  See the watch() method for more information.
+     *
+     *  @return true if host exposes
+     *  any change events on name.
+     */
+    public static function canWatch(host:Object, name:String,
+                                    commitOnly:Boolean = false):Boolean
+    {
+        return !isEmpty(getEvents(host, name, commitOnly));
+    }
+
+    /**
+     *  Returns all the binding events for all bindable properties
+     *  in the host object.
+     *
+     *  @param host The host of the property.
+     *  See the watch() method for more information.
+     *
+     *  @param name The name of the property, or property chain.
+     *  See the watch() method for more information.
+     *
+     *  @param commitOnly Controls inclusion of non-committing
+     *  change events in the returned value.
+     *
+     *  @return Object of the form { eventName: isCommitting, ... }
+     *  containing all change events for the property.
+     */
+    public static function getEvents(host:Object, name:String,
+                                     commitOnly:Boolean = false):Object
+    {
+        if (host is IEventDispatcher)
+        {
+            // Get { eventName: isCommitting, ... } for all change events
+            // defined by host's class on prop <name>
+            var allEvents:Object = DescribeTypeCache.describeType(host).
+                                   bindabilityInfo.getChangeEvents(name);
+            if (commitOnly)
+            {
+                // Filter out non-committing events.
+                var commitOnlyEvents:Object = {};
+                for (var ename:String in allEvents)
+                    if (allEvents[ename])
+                        commitOnlyEvents[ename] = true;
+                return commitOnlyEvents;
+            }
+            else
+            {
+                return allEvents;
+            }
+        }
+        else
+        {
+            // If host is not IEventDispatcher, no events will be dispatched,
+            // regardless of metadata.
+            // User-supplied [Bindable("eventname")] metadata within a
+            // non-IEventDispatcher class is unlikely,
+            // but not specifically prohibited by the compiler currently.
+            return {};
+        }
+    }
+
+    /**
+     *  Lets you determine if an Object has any properties.
+     *
+     *  @param Object to inspect.
+     *
+     *  @return true if Object has no properties.
+     */
+    private static function isEmpty(obj:Object):Boolean
+    {
+        for (var p:String in obj)
+        {
+            return false;
+        }
+        return true;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *  Not for public use. This method is called only from the watch() method.
+     *  See the watch() method for parameter usage.
+     */
+    public function ChangeWatcher(access:Object, handler:Function,
+                                  commitOnly:Boolean = false,
+                                  next:ChangeWatcher = null)
+    {
+        super();
+
+        host = null;
+        name = access is String ? access as String : access.name;
+        getter = access is String ? null : access.getter;
+        this.handler = handler;
+        this.commitOnly = commitOnly;
+        this.next = next;
+        events = {};
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Host object.
+     *  Volatile; may be reset, and will fluctuate in non-root watchers
+     *  due to property value changes.
+     */
+    private var host:Object;
+
+    /**
+     *  Name of watched property.
+     *  Nonvolatile.
+     */
+    private var name:String;
+
+    /**
+     *  Optional user-supplied getter function.
+     *  Nonvolatile.
+     */
+    private var getter:Function;
+
+    /**
+     *  User-supplied event handler function.
+     *  Nonvolatile.
+     */
+    private var handler:Function;
+
+    /**
+     *  True iff watching only committing events.
+     *  Nonvolatile.
+     */
+    private var commitOnly:Boolean;
+
+    /**
+     *  If watching a chain, this is a watcher on the next property
+     *  in the chain: next.host == host[name].
+     *  Null otherwise. Nonvolatile.
+     */
+    private var next:ChangeWatcher;
+
+    /**
+     *  Object { <event-name>: <is-committing>, ... } for current host[name].
+     *  Volatile; varies with host.
+     */
+    private var events:Object;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Detaches this ChangeWatcher instance, and its handler function,
+     *  from the current host.
+     *  You can use the reset() method to reattach
+     *  the ChangeWatcher instance, or watch the same property
+     *  or chain on a different host object.
+     */
+    public function unwatch():void
+    {
+        reset(null);
+    }
+
+    /**
+     *  Retrieves the current value of the watched property or property chain,
+     *  or null if the host object is null.
+     *  For example:
+     *

+     *  watch(obj, ["a","b","c"], ...).getValue() === obj.a.b.c
+     *

+     *
+     *  @return The current value of the watched property or property chain.
+     */
+    public function getValue():Object
+    {
+        return host == null ?
+               null :
+               next == null ?
+               getHostPropertyValue() :
+               next.getValue();
+    }
+
+    /**
+     *  Sets the handler function.
+     *
+     *  @param handler The handler function. This argument must not be null.
+     */
+    public function setHandler(handler:Function):void
+    {
+        this.handler = handler;
+        if (next)
+            next.setHandler(handler);
+    }
+
+    /**
+     *  Returns true if each watcher in the chain is attached
+     *  to at least one change event.
+     *  Note that the isWatching() method
+     *  varies with host, since different hosts may expose different change
+     *  events for the watcher's chosen property.
+     *
+     *  @return true if each watcher in the chain is attached
+     *  to at least one change event.
+     */
+    public function isWatching():Boolean
+    {
+        return !isEmpty(events) && (next == null || next.isWatching());
+    }
+
+    /**
+     *  Resets this ChangeWatcher instance to use a new host object.
+     *  You can call this method to reuse a watcher instance
+     *  on a different host.
+     *
+     *  @param newHost The new host of the property.
+     *  See the watch() method for more information.
+     */
+    public function reset(newHost:Object):void
+    {
+        var p:String;
+
+        if (host != null)
+        {
+            for (p in events)
+            {
+                host.removeEventListener(p, wrapHandler);
+            }
+            events = {};
+        }
+
+        host = newHost;
+
+        if (host != null)
+        {
+            events = getEvents(host, name, commitOnly);
+            for (p in events)
+            {
+                host.addEventListener(p, wrapHandler, false, EventPriority.BINDING, false);
+            }
+        }
+
+        if (next)
+            next.reset(getHostPropertyValue());
+    }
+
+    /**
+     *  @private
+     *  Retrieves the current value of the root watched property,
+     *  or null if host is null.
+     *  I.e. watch(obj, ["a","b","c"], ...).getHostPropertyValue() === obj.a
+     */
+    private function getHostPropertyValue():Object
+    {
+        return host == null ? null : getter != null ? getter(host) : host[name];
+    }
+
+    /**
+     *  @private
+     *  Listener for change events.
+     *  Resets chained watchers and calls user-supplied handler.
+     */
+    private function wrapHandler(event:Event):void
+    {
+        if (next)
+            next.reset(getHostPropertyValue());
+
+        if (event is PropertyChangeEvent)
+        {
+            if ((event as PropertyChangeEvent).property == name)
+                handler(event as PropertyChangeEvent);
+        }
+        else
+        {
+            handler(event);
+        }
+    }
+
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 3582
Author:   egreenfi@adobe.com
Date:     2008-10-11T00:13:59.101068Z

Log Message:
-----------
FxRotate3D effect now no longer uses the component's transform point to rotate, but rather adjusts x/y to simulate rotation around its transform center.  It does so using a new transformAround() method added to ITransformable (including implemetnations by UICompoennt, GraphicElement, and CompoundTransform)

REview: Chet
QA: shouldn't affect any existing test cases
Checkintests: passed

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/geom/ITransformable.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimate3DInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxRotate3DInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/geom/CompoundTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/graphicsClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/AdvancedLayoutFeatures.as</path>

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

--- frameworks/projects/framework/src/mx/core/AdvancedLayoutFeatures.as
+++ frameworks/projects/framework/src/mx/core/AdvancedLayoutFeatures.as
@@ -17,6 +17,7 @@
 	import mx.geom.ITransformable;
 	import flash.events.Event;
 	import mx.geom.CompoundTransform;
+	import flash.geom.Point;
 	use namespace mx_internal;

 	/**
@@ -80,7 +81,6 @@
 	 * offset values applied by the user
 	 */
 	private var _offsets:CompoundTransform;
-

     /**
      * @private
@@ -191,7 +191,7 @@
      */
 	public function set transformX(value:Number):void
 	{
-		layout.transformX= value;
+		layout.transformX = value;
 		invalidate();
 	}
     /**
@@ -232,7 +232,7 @@
      */
 	public function set transformZ(value:Number):void
 	{
-		layout.transformZ = value;
+		layout.transformZ = value;
 		invalidate();
 	}

@@ -256,7 +256,7 @@
      */
 	public function set layoutRotationX(value:Number):void
 	{
-		layout.rotationX = value;
+		layout.rotationX= value;
 		invalidate();
 	}

@@ -277,7 +277,7 @@
      */
 	public function set layoutRotationY(value:Number):void
 	{
-		layout.rotationY = value;
+		layout.rotationY= value;
 		invalidate();
 	}

@@ -298,7 +298,7 @@
      */
 	public function set layoutRotationZ(value:Number):void
 	{
-		layout.rotationZ = value;
+		layout.rotationZ= value;
 		invalidate();
 	}

@@ -343,7 +343,7 @@
      */
 	public function set layoutScaleY(value:Number):void
 	{
-		layout.scaleY = value;
+		layout.scaleY= value;
 		invalidate();
 	}

@@ -365,7 +365,7 @@
      */
 	public function set layoutScaleZ(value:Number):void
 	{
-		layout.scaleZ = value;
+		layout.scaleZ= value;
 		invalidate();
 	}

@@ -396,6 +396,7 @@
 	public function get layoutMatrix():Matrix
 	{
 		return layout.matrix;
+
 	}

@@ -433,12 +434,19 @@
 	public function set offsets(value:CompoundTransform):void
 	{
 		if(_offsets != null)
+		{
 			_offsets.removeEventListener(Event.CHANGE,offsetsChangedHandler);
+			_offsets.owner = null;
+		}
 		_offsets = value;
 		if(_offsets != null)
+		{
 			_offsets.addEventListener(Event.CHANGE,offsetsChangedHandler);
+			_offsets.owner = this;
+		}
 		invalidate();
 	}
+
 	public function get offsets():CompoundTransform
 	{
 		return _offsets;
@@ -487,11 +495,11 @@
 			m = _computedMatrix = new Matrix();
 		else
 			m.identity();
-
-		build2DMatrix(m,layout.transformX,layout.transformY,
-					  layout.scaleX * offsets.scaleX,layout.scaleY * offsets.scaleY,
-					  layout.rotationZ + offsets.rotationZ,
-					  layout.x + offsets.x,layout.y + offsets.y);
+
+			build2DMatrix(m,layout.transformX,layout.transformY,
+						  layout.scaleX * offsets.scaleX,layout.scaleY * offsets.scaleY,
+						  layout.rotationZ + offsets.rotationZ,
+						  layout.x + offsets.x,layout.y + offsets.y);

 		_flags |= COMPUTED_MATRIX_VALID;
 		return m;
@@ -506,11 +514,12 @@
 		if(_flags & COMPUTED_MATRIX3D_VALID)
 			return _computedMatrix3D;

+
 		if(offsets == null)
 		{
 			return layout.matrix3D;
-		}
-
+		}
+
 		var m:Matrix3D = _computedMatrix3D;
 		if(m == null)
 			m = _computedMatrix3D = new Matrix3D();
@@ -568,6 +577,180 @@
 		m.appendTranslation(tx+x,ty+y,tz+z);
 	}

-
+
+	/**
+	 * @private
+	 * call when you're about to change the transform, and when complete you want to keep a particular point fixed in its parent coordinate space.
+	 */
+	public function prepareForTransformCenterAdjustment(affectLayout:Boolean,propertyIs3D:Boolean,tx:Number = NaN,ty:Number = NaN,tz:Number = NaN):*
+	{
+		var computedCenterV:Vector3D;
+		var computedCenterP:Point;
+		var token:Object = {};
+
+		if(isNaN(tx))
+			tx = layout.transformX;
+		if(isNaN(ty))
+			ty = layout.transformY;
+		if(isNaN(tz))
+			tz = layout.transformZ;
+
+		var needAdjustment:Boolean = (tx != 0 || ty != 0 || tz != 0);
+
+		if(needAdjustment == false)
+		{
+			return null;
+		}
+
+		if (is3D || propertyIs3D)
+		{
+			var centerV:Vector3D = new Vector3D(tx,ty,tz);
+			if(affectLayout)
+			{
+				var layoutCenterV:Vector3D = layoutMatrix3D.transformVector(centerV);
+				layoutCenterV.project();
+				token.layout = layoutCenterV;
+			}
+
+			if(_offsets != null)
+			{
+				computedCenterV = computedMatrix3D.transformVector(centerV);
+				computedCenterV.project();
+				token.offset = computedCenterV;
+			}
+			token.center = centerV;
+		}
+		else
+		{
+			var centerP:Point = new Point(tx,ty);
+			if(affectLayout)
+				token.layout = layoutMatrix.transformPoint(centerP);
+
+			if(_offsets != null)
+				token.offset = computedMatrix.transformPoint(centerP);
+			token.center = centerP;
+		}
+		return token;
+	}
+
+	public function completeTransformCenterAdjustment(token:*,changeIs3D:Boolean):void
+	{
+		if(token == null)
+			return;
+
+		var computedCenterV:Vector3D;
+		var computedCenterP:Point;
+		var layoutCenterV:Vector3D;
+		var layoutCenterP:Point;
+
+		if(is3D)
+		{
+			var centerV:Vector3D = token.center;
+			computedCenterV = token.offset;
+			layoutCenterV = token.layout;
+			if(layoutCenterV != null)
+			{
+				var adjustedLayoutCenterV:Vector3D = layoutMatrix3D.transformVector(centerV);
+				adjustedLayoutCenterV.project();
+				if(adjustedLayoutCenterV.equals(layoutCenterV) == false)
+				{
+					layout.translateBy(layoutCenterV.x - adjustedLayoutCenterV.x,
+								layoutCenterV.y - adjustedLayoutCenterV.y,
+								layoutCenterV.z - adjustedLayoutCenterV.z
+								);
+					invalidate();
+				}
+			}
+			if(computedCenterV != null)
+			{
+				var adjustedComputedCenterV:Vector3D = computedMatrix3D.transformVector(centerV);
+				adjustedComputedCenterV.project();
+				if(adjustedComputedCenterV.equals(computedCenterV) == false)
+				{
+					offsets.translateBy(computedCenterV.x - adjustedComputedCenterV.x,
+										computedCenterV.y - adjustedComputedCenterV.y,
+										computedCenterV.z - adjustedComputedCenterV.z
+										);
+					invalidate();
+				}
+			}
+		}
+		else
+		{
+			var centerP:Point = token.center;
+			computedCenterP = token.offset;
+			layoutCenterP = token.layout;
+			if(layoutCenterP != null)
+			{
+				var adjustedLayoutCenterP:Point = layoutMatrix.transformPoint(centerP);
+				if(adjustedLayoutCenterP.equals(layoutCenterP) == false)
+				{
+					layout.translateBy(layoutCenterP.x - adjustedLayoutCenterP.x,
+								layoutCenterP.y - adjustedLayoutCenterP.y,
+								0
+								);
+					invalidate();
+				}
+			}
+
+			if(computedCenterP != null)
+			{
+				var adjustedComputedCenterP:Point = computedMatrix.transformPoint(centerP);
+				if(adjustedComputedCenterP.equals(computedCenterP) == false)
+				{
+					_offsets.translateBy(computedCenterP.x - adjustedComputedCenterP.x,
+							computedCenterP.y - adjustedComputedCenterP.y,
+							0
+							);
+					invalidate();
+				}
+			}
+		}
+	}
+
+	public function transformAround(rx:Number,ry:Number,rz:Number,sx:Number,sy:Number,sz:Number,tx:Number,ty:Number,tz:Number,affectLayout:Boolean = true):void
+	{
+		var is3D:Boolean = ((!isNaN(rx) && rx != 0) || (!isNaN(ry) && ry != 0) || (!isNaN(sz) && sz != 1));
+
+		var token:* = prepareForTransformCenterAdjustment(affectLayout,is3D,tx,ty,tz);
+		if(affectLayout)
+		{
+			if(!isNaN(rx))
+				layout.rotationX = rx;
+			if(!isNaN(ry))
+				layout.rotationY = ry;
+			if(!isNaN(rz))
+				layout.rotationZ = rz;
+			if(!isNaN(sx))
+				layout.scaleX = sx;
+			if(!isNaN(sx))
+				layout.scaleY = sy;
+			if(!isNaN(sz))
+				layout.scaleZ = sz;
+		}
+		else
+		{
+			if(_offsets == null)
+				offsets = new CompoundTransform();
+
+			if(!isNaN(rx))
+				_offsets.rotationX = rx;
+			if(!isNaN(ry))
+				_offsets.rotationY = ry;
+			if(!isNaN(rz))
+				_offsets.rotationZ = rz;
+			if(!isNaN(sx))
+				_offsets.scaleX = sx;
+			if(!isNaN(sx))
+				_offsets.scaleY = sy;
+			if(!isNaN(sz))
+				_offsets.scaleZ = sz;
+		}
+		invalidate();
+		completeTransformCenterAdjustment(token,is3D);
+
+	}
+
 }
-}+}
+


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

--- frameworks/projects/framework/src/mx/core/UIComponentCachePolicy.as
+++ frameworks/projects/framework/src/mx/core/UIComponentCachePolicy.as
@@ -17,6 +17,11 @@
  *  for the cachePolicy property of the UIComponent class.
  *
  *  @see mx.core.UIComponent#cachePolicy
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public final class UIComponentCachePolicy
 {
@@ -31,18 +36,33 @@
     /**
      *  Specifies that the Flex framework should use heuristics
 	 *  to decide whether to cache the object as a bitmap.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public static const AUTO:String = "auto";

 	/**
      *  Specifies that the Flex framework should never attempt
 	 *  to cache the object as a bitmap.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public static const OFF:String = "off";

 	/**
      *  Specifies that the Flex framework should always cache
 	 *  the object as a bitmap.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public static const ON:String = "on";
 }


Fixing bug where the connection was not dropped when receiving an illegal text or binary frame in the middle of a fragmented message.

--- AS3WebSocket/src/com/worlize/websocket/WebSocket.as
+++ AS3WebSocket/src/com/worlize/websocket/WebSocket.as
@@ -445,7 +445,9 @@
 							fragmentationOpcode = frame.opcode;
 						}
 						else {
-							throw new WebSocketError("Illegal BINARY_FRAME received in the middle of a fragmented message.  Expected a continuation or control frame.");
+							drop(WebSocketCloseStatus.PROTOCOL_ERROR,
+								 "Illegal BINARY_FRAME received in the middle of a fragmented message.  Expected a continuation or control frame.");
+							return;
 						}
 					}
 					break;
@@ -464,7 +466,9 @@
 							fragmentationOpcode = frame.opcode;
 						}
 						else {
-							throw new WebSocketError("Illegal TEXT_FRAME received in the middle of a fragmented message.  Expected a continuation or control frame.");
+							drop(WebSocketCloseStatus.PROTOCOL_ERROR,
+								 "Illegal TEXT_FRAME received in the middle of a fragmented message.  Expected a continuation or control frame.");
+							return;
 						}
 					}
 					break;
@@ -476,7 +480,7 @@
 							drop(WebSocketCloseStatus.PROTOCOL_ERROR,
 									"Unexpected continuation frame.");
 							return;
-						}
+						}

 						fragmentationSize += frame.length;


FLEX-34854
Items removed from the collection are not watched for changes anymore.

NOTES:
-to be able to unwatch individual items the storage for the watchers had to change into a (weakly typed) Dictionary.

--- frameworks/projects/framework/src/mx/collections/ComplexFieldChangeWatcher.as
+++ frameworks/projects/framework/src/mx/collections/ComplexFieldChangeWatcher.as
@@ -19,6 +19,7 @@

 package mx.collections {
     import flash.events.EventDispatcher;
+    import flash.utils.Dictionary;

     import mx.binding.utils.ChangeWatcher;
     import mx.core.mx_internal;
@@ -26,28 +27,49 @@
     import mx.events.CollectionEventKind;
     import mx.events.PropertyChangeEvent;

-    public class ComplexFieldChangeWatcher extends EventDispatcher {
-
-        private var _complexFieldWatchers:Vector.<ChangeWatcher> = new Vector.<ChangeWatcher>();
+    public class ComplexFieldChangeWatcher extends EventDispatcher
+    {
+        private var _complexFieldWatchers:Dictionary = new Dictionary(true);
         private var _list:IList;
         private var _listCollection:ICollectionView;

         public function stopWatchingForComplexFieldChanges():void
         {
             unwatchListForChanges();
-
-            for each(var watcher:ChangeWatcher in _complexFieldWatchers)
-            {
-                watcher.unwatch();
-            }
-
-            _complexFieldWatchers.length = 0;
+            unwatchAllItems();
+        }
+
+        private function unwatchAllItems():void
+        {
+            for each(var item:Object in _complexFieldWatchers)
+            {
+                unwatchItem(item);
+                delete _complexFieldWatchers[item];
+            }
+        }
+
+        private function unwatchArrayOfItems(items:Array):void
+        {
+            for(var i:int = 0; i < items.length; i++)
+            {
+                unwatchItem(items[i]);
+            }
+        }
+
+        private function unwatchItem(item:Object):void
+        {
+            var watchersForItem:Array = _complexFieldWatchers[item] as Array;
+            while(watchersForItem && watchersForItem.length)
+            {
+                var watcher:ChangeWatcher = watchersForItem.pop() as ChangeWatcher;
+                if(watcher)
+                    watcher.unwatch();
+            }
         }

         public function startWatchingForComplexFieldChanges():void
         {
             watchListForChanges();
-
             watchItems(list);
         }

@@ -93,8 +115,53 @@
             var watcher:ChangeWatcher = ChangeWatcher.watch(item, chain, new Closure(item, onComplexValueChanged).callFunctionOnObject, false, true);
             if(watcher)
             {
-                _complexFieldWatchers.push(watcher);
-            }
+                addWatcher(watcher, item);
+            }
+        }
+
+        private function addWatcher(watcher:ChangeWatcher, forItem:Object):void
+        {
+            if(!_complexFieldWatchers[forItem])
+                _complexFieldWatchers[forItem] = [];
+            (_complexFieldWatchers[forItem] as Array).push(watcher);
+        }
+
+        private function onComplexValueChanged(item:Object):void
+        {
+            dispatchEvent(PropertyChangeEvent.createUpdateEvent(item, null, null, null));
+        }
+
+        private function get sortFields():Array
+        {
+            return _listCollection && _listCollection.sort ? _listCollection.sort.fields : null;
+        }
+
+        mx_internal function set list(value:IList):void
+        {
+            if(_list != value)
+            {
+                stopWatchingForComplexFieldChanges();
+
+                _list = value;
+                _listCollection = value as ICollectionView;
+            }
+        }
+
+        protected function get list():IList
+        {
+            return _list;
+        }
+
+        private function watchListForChanges():void
+        {
+            if(list)
+                list.addEventListener(CollectionEvent.COLLECTION_CHANGE, onCollectionChanged, false, 0, true);
+        }
+
+        private function unwatchListForChanges():void
+        {
+            if(list)
+                list.removeEventListener(CollectionEvent.COLLECTION_CHANGE, onCollectionChanged);
         }

         private function onCollectionChanged(event:CollectionEvent):void
@@ -105,45 +172,11 @@
                     watchArrayOfItems(event.items);
                     break;
                 }
-            }
-        }
-
-        private function onComplexValueChanged(item:Object):void
-        {
-            dispatchEvent(PropertyChangeEvent.createUpdateEvent(item, null, null, null));
-        }
-
-        private function get sortFields():Array
-        {
-            return _listCollection && _listCollection.sort ? _listCollection.sort.fields : null;
-        }
-
-        mx_internal function set list(value:IList):void
-        {
-            if(_list != value)
-            {
-                stopWatchingForComplexFieldChanges();
-
-                _list = value;
-                _listCollection = value as ICollectionView;
-            }
-        }
-
-        protected function get list():IList
-        {
-            return _list;
-        }
-
-        private function watchListForChanges():void
-        {
-            if(list)
-                list.addEventListener(CollectionEvent.COLLECTION_CHANGE, onCollectionChanged, false, 0, true);
-        }
-
-        private function unwatchListForChanges():void
-        {
-            if(list)
-                list.removeEventListener(CollectionEvent.COLLECTION_CHANGE, onCollectionChanged);
+                case CollectionEventKind.REMOVE: {
+                    unwatchArrayOfItems(event.items);
+                    break;
+                }
+            }
         }
     }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 19344
Author:   egeorgie@adobe.com
Date:     2010-12-14T00:38:13.222484Z

Log Message:
-----------
PARB changes for density scaling

- authorDensity -> applicationDPI, type changed to int
- DensityUtil not visible in the documentation anymore [ExcludeClass]
- DensityUtil. screenDPIToDeviceDensity() -> classifyDPI(), returns int now
- DensityUtil. getDensityScale() -> getDPIScale(), takes int now
- DeviceDensity enum -> DPIClassification enum
- ISystemManager.densityScale property has been removed.
- New property to Application -> runtimeDPI.

QE notes: can start writing automated tests now
Doc notes:
Bugs:
Reviewer: Alex, Glenn, Jason SJ,
Tests run: checkintest
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<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/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/utils/DensityUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/DeviceDensity.as" copyfrom-rev="19256" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/DPIClassification.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/NavigationAngledButtonSkin.as</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/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.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/mobiletheme/src/spark/skins/mobile/ActionButtonSkin.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/DeviceDensity.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderDataTip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderTrackSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ActionBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/CheckBoxSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/preloaders/SplashScreen.as</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/HScrollBarThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/NavigationButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Application.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarThumbSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarThumbSkin.as
@@ -15,7 +15,7 @@
 import flash.display.DisplayObject;
 import flash.display.Graphics;

-import mx.core.DeviceDensity;
+import mx.core.DPIClassification;

 import spark.components.Button;
 import spark.skins.mobile.supportClasses.MobileSkin;
@@ -49,24 +49,24 @@
     public function VScrollBarThumbSkin()
     {
         super();
-        useChromeColor = true;
-
-        // Depending on density set asset and visible thumb width
-        switch (authorDensity)
-        {
-            case DeviceDensity.PPI_240:
-            {
-                thumbClass = spark.skins.mobile240.assets.VScrollThumb;
-                thumbWidth = 6;
-                break;
-            }
-            default:
-            {
-                thumbClass = spark.skins.mobile160.assets.VScrollThumb;
-                thumbWidth = 4;
-                break;
-            }
-        }
+		useChromeColor = true;
+
+		// Depending on density set asset and visible thumb width
+		switch (applicationDPI)
+		{
+			case DPIClassification.DPI_240:
+			{
+				thumbClass = spark.skins.mobile240.assets.VScrollThumb;
+				thumbWidth = 6;
+				break;
+			}
+			default:
+			{
+				thumbClass = spark.skins.mobile160.assets.VScrollThumb;
+				thumbWidth = 4;
+				break;
+			}
+		}
     }

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


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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 7743
Author:   clucier@adobe.com
Date:     2009-06-11T13:53:10.203664Z

Log Message:
-----------
Moving away from using namespace qualifiers in most cases in the SDK.  We've run into a few cases now where the use of qualifiers in code that is called excessively can slow things down.
Bugs: SDK-21337
Reviewer: Ryan, Paul
QE Notes: None
Tests: Ran several random Mustella test groups, checkintests.

Modified Paths:
--------------
106 paths were modified

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ItemRenderer.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ItemRenderer.as
@@ -363,7 +363,7 @@
      */
     override public function get baselinePosition():Number
     {
-        if (!mx_internal::validateBaselinePosition() || !labelElement)
+        if (!validateBaselinePosition() || !labelElement)
             return super.baselinePosition;

         var labelPosition:Point = globalToLocal(labelElement.parent.localToGlobal(


Transferred from the Adobe Open Source Subversion Repository

Revision: 153
Author:   proberts@adobe.com
Date:     2008-01-10T20:22:23.867658Z

Log Message:
-----------
Severity: ignore
Description: docs update -- added @productVersion tag to Flex AIR classes' class descriptions.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FlexNativeMenuEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/FlexHTMLLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemEnumerationMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowMinimizeButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemHistoryButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowRestoreButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowMaximizeButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/StatusBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemTree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/HTML.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/IWindow.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/utils/DirectoryEnumeration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemSizeDisplayMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FlexNativeWindowBoundsEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/utils/DirectoryEnumerationMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/AIREvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowBackground.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FileEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemDataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowCloseButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/ApplicationTitleBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FlexNativeMenu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/NativeDragManagerImpl.as</path>

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

--- frameworks/projects/airframework/src/mx/core/WindowedApplication.as
+++ frameworks/projects/airframework/src/mx/core/WindowedApplication.as
@@ -421,6 +421,8 @@
  *    windowResize="<i>No default</i>"
  *  />
  *  </pre>
+ *
+ *  @productversion Apollo 1.0
  */
 public class WindowedApplication extends Application implements IWindow
 {