Transferred from the Adobe Open Source Subversion Repository

Revision: 12126
Author:   klin@adobe.com
Date:     2009-11-23T23:41:51.154822Z

Log Message:
-----------
Recommitting 12078. Fixed a bug in the check-in test that was breaking sometimes.

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/TrackBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/basicTests/spark/scripts/ScrollBarTestScript.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/VideoPlayer.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as
@@ -293,7 +293,12 @@
      */
     private var steppingDown:Boolean;
     private var steppingUp:Boolean;
-	private var isStepping:Boolean;
+
+    /**
+     * @private
+     * This variable tracks whether we are currently stepping the ScrollBar
+     */
+    private var isStepping:Boolean;

     /**
      * @private
@@ -301,7 +306,7 @@
      * do a single changeValueByPage() operation. This is used to end that operation properly
      * if another operation interrupts it.
      */
-    private var animatingSinglePage:Boolean;
+    private var animatingOnce:Boolean;

     /**
      * @private
@@ -665,9 +670,14 @@
         else
             val = Math.max(value - pageSize, minimum);
         if (getStyle("smoothScrolling"))
+        {
             startAnimation(getStyle("repeatInterval"), val, linearEaser);
+        }
         else
+        {
             setValue(val);
+            dispatchEvent(new Event(Event.CHANGE));
+        }
     }

     //--------------------------------------------------------------------------
@@ -742,26 +752,22 @@
     mx_internal function viewportVerticalScrollPositionChangeHandler(event:PropertyChangeEvent):void
     {
     }
-
-	//---------------------------------
-	// Thumb dragging handlers
-	//---------------------------------
-
-	/**
-	 *  @private
-	 */
-	override protected function thumb_mouseDownHandler(event:MouseEvent) : void
-	{
-		// Stop animation before thumb dragging
-		if (animatingSinglePage)
-		{
-			animationEndHandler(animator);
-			animator.stop();
-		}
-
-		super.thumb_mouseDownHandler(event);
-	}
-
+
+    //---------------------------------
+    // Thumb dragging handlers
+    //---------------------------------
+
+    /**
+     *  @private
+     */
+    override protected function thumb_mouseDownHandler(event:MouseEvent) : void
+    {
+        // Stop animation before thumb dragging
+        stopAnimation();
+
+        super.thumb_mouseDownHandler(event);
+    }
+
     //---------------------------------
     // Mouse up/down handlers
     //---------------------------------
@@ -782,38 +788,35 @@
      */
     protected function button_buttonDownHandler(event:Event):void
     {
-		// Make sure we finish any running page animation before starting
-		// to step.
-		if (animatingSinglePage)
-		{
-			animationEndHandler(animator);
-			animator.stop();
-		}
-
+        // Make sure we finish any running page animation before starting
+        // to step.
+        if (!isStepping)
+            stopAnimation();
+
+        var increment:Boolean = (event.target == incrementButton);
+
+        // Dispatch changeStart for the first step if we can make a step.
+        if (!isStepping &&
+            ((increment && value < maximum) ||
+                (!increment && value > minimum)))
+        {
+            dispatchEvent(new FlexEvent(FlexEvent.CHANGE_START));
+            isStepping = true;
+            systemManager.getSandboxRoot().addEventListener(MouseEvent.MOUSE_UP,
+                button_buttonUpHandler, true);
+            systemManager.getSandboxRoot().addEventListener(
+                SandboxMouseEvent.MOUSE_UP_SOMEWHERE, button_buttonUpHandler);
+        }
+
         // Noop if we're currently running a stepping animation. We get
         // called repeatedly here due to the button's autoRepeat
         if (!steppingDown && !steppingUp)
         {
-            var increment:Boolean = (event.target == incrementButton);
-
-			if (!isStepping &&
-				((increment && value < maximum) ||
-				 (!increment && value > minimum)))
-			{
-				dispatchEvent(new FlexEvent(FlexEvent.CHANGING));
-				isStepping = true;
-			}
-
             // FIXME (chaase): first step is non-animated, just to simplify the delayed
             // start of the animated stepping. Seems okay, but worth thinking
             // about whether we should animate the first step too
             changeValueByStep(increment);

-			systemManager.getSandboxRoot().addEventListener(MouseEvent.MOUSE_UP,
-				button_buttonUpHandler, true);
-			systemManager.getSandboxRoot().addEventListener(
-				SandboxMouseEvent.MOUSE_UP_SOMEWHERE, button_buttonUpHandler);
-
             // Only animate if smoothScrolling enabled and we're not at the end already
             if (getStyle("smoothScrolling") &&
                 ((increment && value < maximum) ||
@@ -847,30 +850,25 @@
     {
         if (steppingDown || steppingUp)
         {
-            if (animator.isPlaying)
-            {
-                animationEndHandler(animator);
-            }
-            // stop even if !isPlaying - it might just be startDelayed
-            animator.stop();
-
-			// Dispatch change event after animation is finished or stopped
-			dispatchEvent(new Event(Event.CHANGE));
-
-			steppingUp = steppingDown = false;
-			isStepping = false;
-        }
-		else if (isStepping)
-		{
-			// Dispatch change event for no animation case
-			dispatchEvent(new Event(Event.CHANGE));
-			isStepping = false;
-		}
-
-		systemManager.getSandboxRoot().removeEventListener(MouseEvent.MOUSE_UP,
-			button_buttonUpHandler, true);
-		systemManager.getSandboxRoot().removeEventListener(
-			SandboxMouseEvent.MOUSE_UP_SOMEWHERE, button_buttonUpHandler);
+        	// stopAnimation will not dispatch a changeEnd.
+            stopAnimation();
+
+            dispatchEvent(new FlexEvent(FlexEvent.CHANGE_END));
+
+            steppingUp = steppingDown = false;
+            isStepping = false;
+        }
+        else if (isStepping)
+        {
+            // Dispatch changeEnd event for no animation case
+            dispatchEvent(new FlexEvent(FlexEvent.CHANGE_END));
+            isStepping = false;
+        }
+
+        systemManager.getSandboxRoot().removeEventListener(MouseEvent.MOUSE_UP,
+            button_buttonUpHandler, true);
+        systemManager.getSandboxRoot().removeEventListener(
+            SandboxMouseEvent.MOUSE_UP_SOMEWHERE, button_buttonUpHandler);
     }

     //---------------------------------
@@ -894,16 +892,11 @@

         // Make sure we finish any running page animation before starting
         // a new one.
-        if (animatingSinglePage)
-		{
-			animationEndHandler(animator);
-            animator.stop();
-		}
+        stopAnimation();
+
         // Cache original event location for use on later repeating events
         trackPosition = track.globalToLocal(new Point(event.stageX, event.stageY));
-
-		dispatchEvent(new FlexEvent(FlexEvent.CHANGING));
-
+
         // If the user shift-clicks on the track, then offset the event coordinates so
         // that the thumb ends up centered under the mouse.
         if (event.shiftKey)
@@ -927,11 +920,12 @@
                 slideDuration != 0 &&
                 (maximum - minimum) != 0)
             {
+                dispatchEvent(new FlexEvent(FlexEvent.CHANGE_START));
                 // Animate the shift-click operation
                 startAnimation(slideDuration *
                     (Math.abs(value - newScrollValue) / (maximum - minimum)),
                     adjustedValue, deceleratingSineEaser);
-				animatingSinglePage = true;
+                animatingOnce = true;
             }
             else
             {
@@ -940,6 +934,10 @@
             }
             return;
         }
+
+        dispatchEvent(new FlexEvent(FlexEvent.CHANGE_START));
+        // Assume we're repeating unless user releases
+        animatingOnce = false;

         changeValueByPage(trackScrollDown);

@@ -998,7 +996,7 @@
      */
     protected function animatePaging(newValue:Number, pageSize:Number):void
     {
-        animatingSinglePage = false;
+        animatingOnce = false;
         // FIXME (chaase): hard-coding easing behavior, how to style it?
         startAnimation(
             getStyle("repeatInterval") * (Math.abs(newValue - value) / pageSize),
@@ -1053,6 +1051,7 @@
      */
     private function animationUpdateHandler(animation:Animation):void
     {
+        // TODO (klin): Add support to send change events at the right intervals.
         setValue(animation.currentValue["value"]);
     }

@@ -1068,20 +1067,44 @@
         if (trackScrolling)
             trackScrolling = false;

+        // End stepping animation
         if (steppingDown || steppingUp)
         {
             // If we're animating stepping, end on a final real step call in the
             // appropriate direction, ensuring that we stop on a content
             // item boundary
             changeValueByStep(steppingDown);
+
             animator.startDelay = 0;
-			return;
-        }
-
-		if (animatingSinglePage)
-			dispatchEvent(new Event(Event.CHANGE));
-
-        animatingSinglePage = false;
+            return;
+        }
+
+        // End paging or shift-click animation.
+        setValue(nearestValidValue(this.value, snapInterval));
+        dispatchEvent(new Event(Event.CHANGE));
+
+        // We only dispatch the changeEnd event in the endHandler
+        // for paging when we are not repeating.
+        if (animatingOnce)
+        {
+            dispatchEvent(new FlexEvent(FlexEvent.CHANGE_END));
+            animatingOnce = false;
+        }
+    }
+
+    /**
+     *  @private
+     *  Stops a running animation prematurely and calls the
+     *  animationEndHandler.
+     */
+    private function stopAnimation():void
+    {
+        if (animator.isPlaying)
+            animationEndHandler(animator);
+
+        // Stop it regardless, in case the animation is startDelayed and
+        // thus not 'playing', but still active
+        animator.stop();
     }

     /**
@@ -1200,49 +1223,41 @@
         systemManager.getSandboxRoot().removeEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE,
             track_mouseUpHandler);

-		// First, we check for smoothScrolling and also if we are
-		// not in a shift-click case.
+        // First, we check for smoothScrolling and also if we are
+        // in the non-repeating case.
         if (getStyle("smoothScrolling"))
         {
-			if (!animatingSinglePage)
-			{
-				// We check the timer to see if the user released the mouse
-				// before or after the repeat delay has expired. If not,
-				// we are currently repeating and we should end the animation
-				// as well as dispatch a change event.
-				if (trackScrollTimer && trackScrollTimer.running)
-				{
-					// If the animation has not yet finished before the repeat delay
-					// we set animatingSinglePage to true. Otherwise, the animation
-					// is done but repeating has not begun so we dispatch a change
-					// event.
-					if (animator.isPlaying)
-						animatingSinglePage = true;
-					else
-						dispatchEvent(new Event(Event.CHANGE));
-				}
-				else
-				{
-					if (animator.isPlaying)
-					{
-						animationEndHandler(animator);
-					}
-					// Stop it regardless, in case the animation is startDelayed and
-					// thus not 'playing', but still active
-					animator.stop();
-
-					dispatchEvent(new Event(Event.CHANGE));
-				}
-			}
-        }
-		else
-		{
-			// Dispatch change if there's no animation.
-			dispatchEvent(new Event(Event.CHANGE));
-		}
-
-		if (trackScrollTimer)
-			trackScrollTimer.reset();
+            if (!animatingOnce)
+            {
+                // We check the timer to see if the user released the mouse
+                // before the repeat delay has expired.
+                if (trackScrollTimer && trackScrollTimer.running)
+                {
+                    // If the animation has not yet finished before the repeat delay
+                    // we set animatingOnce to true. Otherwise, the animation
+                    // is done but repeating has not begun so we dispatch a changeEnd
+                    // event.
+                    if (animator.isPlaying)
+                        animatingOnce = true;
+                    else
+                        dispatchEvent(new FlexEvent(FlexEvent.CHANGE_END));
+                }
+                else
+                {
+                    // repeating case
+                    stopAnimation();
+                    dispatchEvent(new FlexEvent(FlexEvent.CHANGE_END));
+                }
+            }
+        }
+        else
+        {
+            // Dispatch changeEnd if there's no animation.
+            dispatchEvent(new FlexEvent(FlexEvent.CHANGE_END));
+        }
+
+        if (trackScrollTimer)
+            trackScrollTimer.reset();
     }

     /**
@@ -1252,6 +1267,8 @@
      */
     private function track_rollOverHandler(event:MouseEvent):void
     {
+        // TODO (klin): Fix up roll over/roll out handling so that
+        // it works with animation.
         if (trackScrolling && trackScrollTimer)
             trackScrollTimer.start();
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 3665
Author:   hmuller@adobe.com
Date:     2008-10-15T20:42:18.087020Z

Log Message:
-----------
Fixed 17335, completed Scrollbar viewport property, fixed an FxRange::setValue() problem.

Added a special case for zero-height rows/columns to
Vertical,HorizontalLayout::updateDisplayList(),::inView()
to fix 17335.

Fixed FxRange: now FlexEvent.VALUE_COMMIT event handlers
will see the final constrained value, per
FxRange::nearestValidValue(), as they should.

Completed the ScrollBar viewport property implementation.   Now
all of the synchronization between scrollbars and a their viewport
is handled by the scrollbar.   Previously it was handled by both
FxScroller, ScrollerSkin, and the layout classes.

ScrollBar now tracks its viewport's actual size, content size, and
scroll positions.  The corresonding code and protected API has been
removed from FxScroller, notably:

  protected function vsb_valueCommitHandler(event:Event):void
  protected function hsb_valueCommitHandler(event:Event):void
  protected function viewportContentWidthChanged(event:PropertyChangeEvent):void
  protected function viewportContentHeightChanged(event:PropertyChangeEvent):void
  protected function viewportHorizontalScrollPositionChanged(event:PropertyChangeEvent):void
  protected function viewportVerticalScrollPositionChanged(event:PropertyChangeEvent):void

The protected methods for tracking the viewport have moved,
with slightly different names, to FxScrollBar:

  protected function viewportResizeHandler(event:ResizeEvent):void
  protected function viewportContentWidthChangeHandler(event:PropertyChangeEvent):void
  protected function viewportContentHeightChangeHandler(event:PropertyChangeEvent):void
  protected function viewportHorizontalScrollPositionChangeHandler(event:PropertyChangeEvent):void
  protected function viewportVerticalScrollPositionChangeHandler(event:PropertyChangeEvent):void

QE: I've made API changes
Doc: No
Checkintests: Pass
Reviewer: Ryan
Bugs:
    SDK-17335 - inView reports incorrectly when setting rowHeight to zero on a VerticalLayout

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxRange.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxScroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxScrollerSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxVScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxHScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/VerticalLayout.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as
@@ -19,6 +19,8 @@
 import flash.utils.Timer;
 import mx.components.FxButton;
 import mx.core.IViewport;
+import mx.events.PropertyChangeEvent;
+import mx.events.ResizeEvent;

 /**
  *  The FxScrollBar class helps to position
@@ -205,8 +207,23 @@
      */
     public function set viewport(value:IViewport):void
     {
+        if (value == _viewport)
+            return;
+
+        if (_viewport)  // old _viewport
+        {
+            _viewport.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, viewport_propertyChangeHandler);
+            _viewport.removeEventListener(ResizeEvent.RESIZE, viewportResizeHandler);
+        }
+
         _viewport = value;
-    }
+
+        if (_viewport)  // new _viewport
+        {
+            _viewport.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, viewport_propertyChangeHandler);
+            _viewport.addEventListener(ResizeEvent.RESIZE, viewportResizeHandler);
+        }
+    }

     //--------------------------------------------------------------------------
     //
@@ -339,6 +356,68 @@
     //
     //--------------------------------------------------------------------------

+    //---------------------------------
+    // Viewport property changes
+    //---------------------------------
+
+    private function viewport_propertyChangeHandler(event:PropertyChangeEvent):void
+    {
+        switch(event.property)
+        {
+            case "contentWidth":
+                viewportContentWidthChangeHandler(event);
+                break;
+
+            case "contentHeight":
+                viewportContentHeightChangeHandler(event);
+                break;
+
+            case "horizontalScrollPosition":
+                viewportHorizontalScrollPositionChangeHandler(event);
+                break;
+
+            case "verticalScrollPosition":
+                viewportVerticalScrollPositionChangeHandler(event);
+                break;
+        }
+    }
+
+
+   /**
+    *  Called when the viewport's width or height changes, does nothing by default.
+    */
+    protected function viewportResizeHandler(event:ResizeEvent):void
+    {
+    }
+
+   /**
+    *  Called when the viewport's contentWidth changes, does nothing by default.
+    */
+    protected function viewportContentWidthChangeHandler(event:PropertyChangeEvent):void
+    {
+    }
+
+    /**
+     *  Called when the viewport's contentHeight changes, does nothing by default.
+     */
+    protected function viewportContentHeightChangeHandler(event:PropertyChangeEvent):void
+    {
+    }
+
+    /**
+     *  Called when the viewport's horizontalScrollPosition changes, does nothing by default.
+     */
+    protected function viewportHorizontalScrollPositionChangeHandler(event:PropertyChangeEvent):void
+    {
+    }
+
+    /**
+     *  Called when the viewport's verticalScrollPosition changes, does nothing by default.
+     */
+    protected function viewportVerticalScrollPositionChangeHandler(event:PropertyChangeEvent):void
+    {
+    }
+
     //---------------------------------
     // Mouse up/down handlers
     //---------------------------------


Add <precludes> statement to hint at what to do when --enable-wordcode-interp builds fail

--- core/avmfeatures.as
+++ core/avmfeatures.as
@@ -488,6 +488,7 @@
     <defines>    VMCFG_WORDCODE  </defines>
     <defines>    VMCFG_WORDCODE_PEEPHOLE  </defines>
     <defines>    VMCFG_LOOKUP_CACHE </defines>
+    <precludes>  AVMFEATURE_COMPILEPOLICY </precludes>
   </feature>

   <feature>


Fixed port delay behavior

Fixed port delay behavior


using the [] operator on a SceneIterator with an out of bound index will now return null

--- src/aerys/minko/scene/SceneIterator.as
+++ src/aerys/minko/scene/SceneIterator.as
@@ -58,7 +58,7 @@
 			var index : int = parseInt(name);

 			if (index == name)
-				return _selection[index];
+				return index < _selection.length ? _selection[index] : null;
 			else
 			{
 				return new SceneIterator(


Bug 520082: Add flash.utils.* import to describetype so test can be run in the ats (r=cpeyer)

--- test/acceptance/as3/DescribeType/describeType.as
+++ test/acceptance/as3/DescribeType/describeType.as
@@ -39,6 +39,7 @@
 package {

 	import avmplus.*;
+    import flash.utils.*;

 	public namespace ns = "some_ns"
 	public namespace ns2 = "another_ns"


- fixed update timer

- fixed update timer

--- src/flash/htmlelements/VideoElement.as
+++ src/flash/htmlelements/VideoElement.as
@@ -287,6 +287,7 @@
 				return;

 			_stream.seek(pos);
+			sendEvent(HtmlMediaEvent.TIMEUPDATE);
 			sendEvent(HtmlMediaEvent.SEEKED);
 		}


Adding support for flex 4 and psuedo selectors... this is a little rough right now... refactoring to come

--- src/flexlib/css/CSSPropertyInjector.as
+++ src/flexlib/css/CSSPropertyInjector.as
@@ -23,10 +23,21 @@

 package flexlib.css
 {
+import flash.events.EventDispatcher;
+import flash.events.IEventDispatcher;
+import flash.system.ApplicationDomain;
+import flash.system.SecurityDomain;
+import flash.utils.Dictionary;
+import flash.utils.getDefinitionByName;
+import flash.utils.getQualifiedClassName;
+
+import mx.core.UIComponent;
+import mx.events.FlexEvent;
+import mx.events.StateChangeEvent;
+import mx.events.StyleEvent;
 import mx.styles.CSSStyleDeclaration;
 import mx.styles.IStyleClient;
 import mx.styles.StyleManager;
-import mx.utils.ObjectUtil;

 /**
  *  A utility to dynamically inject values from CSSStyleDeclarations into a target
@@ -39,6 +50,42 @@
  */
 public dynamic class CSSPropertyInjector
 {
+    //--------------------------------------------------------------------------
+    //
+    //  Class methods
+    //
+    //--------------------------------------------------------------------------
+
+	public static function loadStyleDeclarations( url : String, update : Boolean = false,
+						                          trustContent : Boolean = false,
+						                          applicationDomain : ApplicationDomain = null,
+						                          securityDomain : SecurityDomain = null
+						                        ) : IEventDispatcher
+	{
+		var dispatcher : IEventDispatcher =
+			StyleManager.loadStyleDeclarations(
+				url, update, trustContent,
+				applicationDomain, securityDomain
+			);
+
+		dispatcher.addEventListener(
+			StyleEvent.COMPLETE,
+			CSSPropertyInjector.handleStyleEventComplete
+		);
+
+		return dispatcher;
+	}
+
+	protected static function handleStyleEventComplete( event : StyleEvent ) : void
+	{
+		dispatcher.dispatchEvent( event.clone() );
+	}
+
+	protected static var dispatcher : EventDispatcher = null;
+	{
+		dispatcher = new EventDispatcher();
+	}
+

     //--------------------------------------------------------------------------
     //
@@ -53,6 +100,11 @@
     {
         super();

+        CSSPropertyInjector.dispatcher.addEventListener(
+        	StyleEvent.COMPLETE,
+			this.handleStyleEventComplete,
+        	false, 0, true
+        );
     }

@@ -65,12 +117,27 @@
     /**
      *  The target object to apply the CSS values to.
      */
+    public function get state() : String
+    {
+        return __state;
+    }
+    public function set state( val : String ) : void
+    {
+        __state = val;
+        __stateChanged = true;
+        invalidateProperties();
+    }
+
+    /**
+     *  The target object to apply the CSS values to.
+     */
     public function get target() : Object
     {
         return __target;
     }
     public function set target( val : Object ) : void
     {
+
         __target = val;
         __targetChanged = true;
         invalidateProperties();
@@ -135,6 +202,13 @@
     //
     //--------------------------------------------------------------------------

+	protected function handleStyleEventComplete( event : StyleEvent ) : void
+	{
+		__styleNameChanged = true;
+
+		invalidateProperties();
+	}
+
     /**
      *  Added to adhere to the framework lifecycle naming convention. Just calls
      *  commitProperties().
@@ -151,6 +225,39 @@
      */
     protected function commitProperties() : void
     {
+    	if ( __stateChanged == true )
+    	{
+    		__stateChanged = false;
+
+    		applyStyles( state );
+    	}
+
+    	var skinnableComponentType : Class = null;
+    	try
+    	{
+    		skinnableComponentType = getDefinitionByName( "flex.core.SkinnableComponent" ) as Class;
+	    	if ( __targetChanged == true && target is skinnableComponentType )
+	    	{
+	    		if ( target.skin == null )
+	    		{
+	    			target.addEventListener(
+	    				FlexEvent.CREATION_COMPLETE, function( event : FlexEvent ) : void
+							{
+								event.target.skin.addEventListener( StateChangeEvent.CURRENT_STATE_CHANGE, handleCurrentStateChange );
+							}
+					);
+	    		}
+	    		else
+	    		{
+		    		target.skin.addEventListener(
+		    			StateChangeEvent.CURRENT_STATE_CHANGE,
+		    			handleCurrentStateChange
+					);
+		    	}
+	    	}
+    	}
+    	catch( error : Error ) {}
+
         //  if at least target or targets is set as well as styleName
         //  and styles.. and one of these values has changed...
         //  the style declaration is retreived and applied
@@ -162,6 +269,7 @@
             if ( __styleNameChanged == true || __styleNamesChanged == true )
             {
                 getCSSStyleDeclarations();
+                buildAggregateMappings();
             }

             __targetChanged = __targetsChanged = __styleNameChanged = false;
@@ -170,6 +278,11 @@
         }
     }

+    protected function handleCurrentStateChange( event : StateChangeEvent ) : void
+    {
+    	applyStyles( event.newState );
+    }
+
     /**
      *  @protected
      *
@@ -177,7 +290,9 @@
      */
     protected function getCSSStyleDeclarations() : void
     {
+    	__pseudoSelectors = new Dictionary();
         __cssStyleDeclarations = [];
+
         if ( styleName != null && getCSSStyleDeclaration( styleName ) != null )
         {
             __cssStyleDeclarations.push( getCSSStyleDeclaration( styleName ) );
@@ -193,8 +308,19 @@
                 }
             }
         }
-    }
-
+
+        var isTargetIStyleClient : Boolean = target is IStyleClient;
+
+        if ( isTargetIStyleClient == false && targets != null )
+        {
+        	for each ( var obj : Object in targets )
+        	{
+        		isTargetIStyleClient = obj is IStyleClient;
+        		if ( isTargetIStyleClient == true ) break;
+        	}
+        }
+    }
+
     /**
      *  @protected
      *
@@ -210,7 +336,106 @@
             cssStyleDeclaration = StyleManager.getStyleDeclaration( "." + styleName );
         }

+        if ( cssStyleDeclaration == null )
+        {
+        	var qualClassName : String = null;
+        	if ( target != null )
+        	{
+	        	qualClassName = getQualifiedClassName( target ).split( "::" ).join( "." );
+				cssStyleDeclaration = StyleManager.getStyleDeclaration(
+											qualClassName +
+									   	    ( styleName.charAt( 0 ) == "." ? "" : "." ) +
+									   	    styleName
+								   	  );
+			}
+
+			if ( targets != null && cssStyleDeclaration == null )
+			{
+				for each ( var target : Object in targets )
+				{
+		        	qualClassName = getQualifiedClassName( target ).split( "::" ).join( "." );
+					cssStyleDeclaration = StyleManager.getStyleDeclaration(
+												qualClassName +
+										   	    ( styleName.charAt( 0 ) == "." ? "" : "." ) +
+										   	    styleName
+									   	  );
+
+					if ( cssStyleDeclaration != null ) break;
+				}
+			}
+        }
+
+		var pseudoName : String = null;
+		for each ( var selector : String in StyleManager.selectors )
+		{
+			pseudoName = null;
+
+			//  Flex 4
+			if ( selector.indexOf( styleName + ":" ) != -1  )
+			{
+				pseudoName = selector.split( ":" )[ 1 ];
+				if ( __pseudoSelectors[ pseudoName ] == null ) __pseudoSelectors[ pseudoName ] = [];
+				__pseudoSelectors[ pseudoName ].push( StyleManager.getStyleDeclaration( selector ) );
+			}
+
+			// Flex 3
+			else if ( selector.indexOf( styleName ) != -1 )
+			{
+				pseudoName = selector.substr( selector.indexOf( styleName ) + styleName.length );
+				pseudoName = pseudoName.toLowerCase();
+			}
+
+			if ( pseudoName != null )
+			{
+				if ( __pseudoSelectors[ pseudoName ] == null ) __pseudoSelectors[ pseudoName ] = [];
+				__pseudoSelectors[ pseudoName ].push( StyleManager.getStyleDeclaration( selector ) );
+			}
+		}
+
         return cssStyleDeclaration;
+    }
+
+    /**
+     *  @protected
+     *
+     *  Builds the dictionaries that map the aggregate selectors and pseudo selectors
+     */
+    protected function buildAggregateMappings() : void
+    {
+    	__aggregateStyles = createAggregateMapping( __cssStyleDeclarations );
+
+    	__aggregatePseudoMappings = new Dictionary();
+
+    	var mapping : Dictionary = null;
+    	for ( var key : String in __pseudoSelectors )
+    	{
+    		mapping = createAggregateMapping( __pseudoSelectors[ key ] as Array );
+    		__aggregatePseudoMappings[ key ] =  mapping;
+    	}
+
+    	return;
+    }
+
+    /**
+     *  @protected
+     *
+     *  Aggregates a set of CSSStyleDeclarations into a dictionary mapping
+     */
+    protected function createAggregateMapping( cssStyleDeclarations : Array ) : Dictionary
+    {
+    	var styles : Array = null;
+    	var mapping : Dictionary = new Dictionary();
+
+    	for each ( var styleDec : CSSStyleDeclaration in cssStyleDeclarations )
+    	{
+    		styles = getStyles( styleDec );
+    		for each ( var style : String in styles )
+    		{
+    			mapping[ style ] = styleDec.getStyle( style );
+    		}
+    	}
+
+    	return mapping;
     }

     /**
@@ -218,84 +443,95 @@
      *
      *  Applies the style values in __cssStyleDeclaration to the target object(s)
      */
-    protected function applyStyles() : void
-    {
-        var styles : Array = [];
-        var styleObj : Object = null;
-
-        for each ( var cssStyleDeclaration : CSSStyleDeclaration in __cssStyleDeclarations )
-        {
-            styleObj = {};
-
-            if ( cssStyleDeclaration.factory != null )
+    protected function applyStyles( state : String = null ) : void
+    {
+        if ( this.target != null )
+        {
+            assignStylesToTarget( this.target, state );
+        }
+
+        if ( targets != null )
+        {
+            for each ( var target : Object in targets )
             {
-                cssStyleDeclaration.factory.apply( styleObj );
-            }
-            if ( cssStyleDeclaration.defaultFactory != null )
+                assignStylesToTarget( target, state );
+            }
+        }
+    }
+
+    /**
+     *  @protected
+     *
+     *  Returns a set of style names for a given CSSStyleDeclaration.
+     *
+     *  NOTE: This only works for CSS that is compiled into the app as it relies on the proto
+     *        chaining mechanism.
+     */
+    protected function getStyles( cssStyleDeclaration : CSSStyleDeclaration, arr : Array = null ) : Array
+    {
+        var styleObj : Object = {};
+        var ret : Array = ( arr != null ? arr : [] );
+
+        if ( cssStyleDeclaration.factory != null )
+        {
+            cssStyleDeclaration.factory.apply( styleObj );
+        }
+        if ( cssStyleDeclaration.defaultFactory != null )
+        {
+            cssStyleDeclaration.defaultFactory.apply( styleObj );
+        }
+
+        for ( var propName : String in styleObj )
+        {
+            ret.push( propName );
+        }
+
+        return ret;
+    }
+
+    /**
+     *  @protected
+     *
+     *  Assigns a set of styles to a target object
+     */
+    protected function assignStylesToTarget( target : Object, state : String = null,
+    										 styles : Dictionary = null ) : void
+    {
+        var val : * = undefined;
+
+        if ( styles == null ) styles = __aggregateStyles;
+
+        for ( var key : String in __aggregateStyles )
+        {
+        	val = styles[ key ];
+
+            //  If the CSSStyeDeclaration lookup is null.. Look for a
+            //  default (overriding) value on the CSSPropertyInjector
+            if ( this[ key ] != null )
             {
-                cssStyleDeclaration.defaultFactory.apply( styleObj );
+                val = this[ key ];
             }

-            var temp : Array = ObjectUtil.getClassInfo( styleObj ).properties as Array;
-            for ( var propName : String in styleObj )
+            //  If there is a property, assign the value
+            if ( target.hasOwnProperty( key ) && target[ key ] != val )
             {
-                styles.push( propName );
+                target[ key ] = val;
             }
-        }
-
-        if ( target != null )
-        {
-            assignStylesToTarget( styles, this.target );
-        }
-
-        if ( targets != null )
-        {
-            for each ( var target : Object in targets )
+
+            //  If there is no property and target is an IStyleClient
+            //  set the value as a style.
+            else if ( target is IStyleClient )
             {
-                assignStylesToTarget( styles, target );
+               ( target as IStyleClient ).setStyle( key, val );
             }
         }
-    }
-
-    /**
-     *  @protected
-     *
-     *  Assigns a set of styles to a target object
-     */
-    protected function assignStylesToTarget( styles : Array, target : Object ) : void
-    {
-        var cssStyleDeclaration : CSSStyleDeclaration = null;
-        var val : * = undefined;
-
-        for each ( var style : String in styles )
-        {
-            for each ( cssStyleDeclaration in __cssStyleDeclarations )
-            {
-                //  Look for a value for [style] in the CSSStyeDeclaration
-                if ( cssStyleDeclaration.getStyle( style ) != null )
-                {
-                    val = cssStyleDeclaration.getStyle( style );
-                }
-                //  If the CSSStyeDeclaration lookup is null.. Look for a
-                //  default value on the CSSPropertyInjector
-                else if ( this[ style ] != null )
-                {
-                    val = this[ style ];
-                }
-
-                //  If there is a property, assign the value
-                if ( target.hasOwnProperty( style ) )
-                {
-                    target[ style ] = val;
-                }
-                //  If there is no property and target is a UIComponent
-                //  set the value as a style.
-                else if ( target is IStyleClient )
-                {
-                   ( target as IStyleClient ).setStyle( style, val );
-                }
-            }
-        }
+
+        if ( state != null )
+        {
+        	assignStylesToTarget( target, null, __aggregatePseudoMappings[ state ] );
+        }
+
+//		if ( target is UIComponent ) (target as UIComponent).invalidateDisplayList();
     }

@@ -311,6 +547,9 @@
     protected var __targets : Array = null;
     protected var __targetsChanged : Boolean = false;

+    protected var __state : String = null;
+    protected var __stateChanged : Boolean = false;
+
     protected var __styleName : String = null;
     protected var __styleNameChanged : Boolean = false;

@@ -318,6 +557,9 @@
     protected var __styleNamesChanged : Boolean = false;

     protected var __cssStyleDeclarations : Array = [];
+    protected var __pseudoSelectors : Dictionary = null;
+    protected var __aggregateStyles : Dictionary = null;
+    protected var __aggregatePseudoMappings : Dictionary = null;

 } //  end class
 } //  end package


gpu batch render

gpu batch render

--- src/flash/__native/GLCanvasRenderingContext2D.as
+++ src/flash/__native/GLCanvasRenderingContext2D.as
@@ -271,6 +271,10 @@
 							matrhelp.copyFrom(posmatr);
 							matrhelp.invert();
 							matrhelp.concat(uvmatr);
+							matrhelp.b *=-1;
+							matrhelp.c *=-1;
+							matrhelp.tx *=-1;
+							matrhelp.ty *=-1;
 							x2 = matrhelp.a * x + matrhelp.c * y + matrhelp.tx;
 							y2 = matrhelp.d * y + matrhelp.b * x + matrhelp.ty;
 							lastDrawable.uv.data.push(x2,y2);


XIFF-83 Tests for XIFF-88

XIFF-83 Tests for XIFF-88

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

--- test/org/igniterealtime/xiff/data/MessageTest.as
+++ test/org/igniterealtime/xiff/data/MessageTest.as
@@ -471,48 +471,41 @@

-		/**
-		 * @see http://xmpp.org/extensions/xep-0184.html
-		 *
+                // http://xmpp.org/extensions/xep-0184.html
 		[Test( description="Message parse from XML - receipt request" )]
 		public function testParseReceiptRequest():void
 		{
-			var incoming:XML = <message
-				from='northumberland@shakespeare.lit/westminster'
-				id='richard2-4.1.247'
-				to='kingrichard@royalty.england.lit/throne'>
-			  My lord, dispatch; read o'er these articles.
-			  <request xmlns='urn:xmpp:receipts'/>
-			</message>;
+                        var incoming:XML = <message
+                            from='northumberland@shakespeare.lit/westminster'
+                            id='richard2-4.1.247'
+                            to='kingrichard@royalty.england.lit/throne'>
+                          My lord, dispatch; read o'er these articles.
+                          <request xmlns='urn:xmpp:receipts'/>
+                        </message>;
 			var testValue:String = "receipt";

 			var message:Message = new Message();
 			message.xml = incoming;

 			assertEquals( testValue, message.receipt );
-		}
-		*/
-
-		/**
-		 * @see http://xmpp.org/extensions/xep-0184.html
-		 *
-		[Test( description="Message parse from XML - receipt request" )]
+                }
+
+                [Test( description="Message parse from XML - receipt received" )]
 		public function testParseReceiptReceived():void
 		{
-			var incoming:XML = <message
-				from='kingrichard@royalty.england.lit/throne'
-				id='bi29sg183b4v'
-				to='northumberland@shakespeare.lit/westminster'>
-			  <received xmlns='urn:xmpp:receipts' id='richard2-4.1.247'/>
-			</message>;
+                        var incoming:XML = <message
+                            from='kingrichard@royalty.england.lit/throne'
+                            id='bi29sg183b4v'
+                            to='northumberland@shakespeare.lit/westminster'>
+                          <received xmlns='urn:xmpp:receipts' id='richard2-4.1.247'/>
+                        </message>;
 			var testValue:String = "received";

 			var message:Message = new Message();
 			message.xml = incoming;

 			assertEquals( testValue, message.receipt );
-		}
-		*/
+                }

 		[Test( description="Message parse from XML - attention" )]
 		public function testParseAttention():void


分数提示添加

分数提示添加

--- as3porject/src/component/ScoreInputItem.as
+++ as3porject/src/component/ScoreInputItem.as
@@ -16,15 +16,21 @@
 	{

 		private var scoreText:FlxText;
+		private var notifyText:FlxText;
 		private var _lastCharCode:uint = 0;
 		private var _currentScore:int = 30;
 		public function ScoreInputItem( stateFlx:FlxState, currentScore:int )
 		{
-			scoreText = new FlxText( 0, 0, FlxG.width, "" );
+			scoreText = new FlxText( 0, 100, FlxG.width, "" );
 			scoreText.alignment = KaleiTextFormatConst.ALIGH_CENTER;
 			scoreText.size = 14;

+			notifyText = new FlxText( 0, 80, FlxG.width, "Enter your name..." );
+			notifyText.alignment = KaleiTextFormatConst.ALIGH_CENTER;
+			notifyText.size = 14;
+
 			stateFlx.add( scoreText );
+			stateFlx.add( notifyText );

 			FlxG.stage.addEventListener( KeyboardEvent.KEY_DOWN, keyBoardDown );
 			FlxG.stage.addEventListener( KeyboardEvent.KEY_UP, keyBoardUP );
@@ -49,11 +55,12 @@
 				var charString:String = String.fromCharCode(_lastCharCode);
 				scoreText.text = scoreText.text + charString;
 				_lastCharCode = 0;
-				FlxG.stage.removeEventListener( KeyboardEvent.KEY_UP, keyBoardUP );
 			}

 			if ( event.keyCode == Keyboard.ENTER )
 			{
+				FlxG.stage.removeEventListener( KeyboardEvent.KEY_DOWN, keyBoardDown );
+				FlxG.stage.removeEventListener( KeyboardEvent.KEY_UP, keyBoardUP );
 				enterName( scoreText.text );
 			}
 		}


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

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


Transferred from the Adobe Open Source Subversion Repository

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

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


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

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

--- frameworks/projects/mx/src/mx/controls/videoClasses/NCManagerReconnectClient.as
+++ frameworks/projects/mx/src/mx/controls/videoClasses/NCManagerReconnectClient.as
@@ -0,0 +1,49 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2006 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.controls.videoClasses
+{
+
+[ExcludeClass]
+
+/**
+ *  @private
+ *  Holds client-side functions for remote procedure calls (RPCs) from
+ *  the FCS during reconnection.
+ *  One of these objects is created and passed to the
+ *  NetConnection.client property.
+ */
+public class NCManagerReconnectClient
+{
+	include "../../core/Version.as";
+
+    public var owner:NCManager;
+
+    public function NCManagerReconnectClient(owner:NCManager = null)
+    {
+		super();
+
+        this.owner = owner;
+    }
+
+    // This is defined just to work around bug 121673
+    public function onBWCheck(... rest):uint
+    {
+        return ++owner.payload;
+    }
+
+    public function onBWDone(... rest):void
+    {
+        owner.onReconnected();
+    }
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 5545
Author:   jimurphy@adobe.com
Date:     2009-03-25T19:00:52.330680Z

Log Message:
-----------
1st pass of rename according to the spec http://opensource.adobe.com/wiki/display/flexsdk/Dropping+the+Fx+Prefix

Flex now requires CSS Style declarations to declare @namespace rules and disambiguate between halo and spark components using CSS 3 namespace prefixes on type selectors. At compile time, this namespace information will be used to map type names to qualified ActionScript class names. At runtime, type selectors are matched on qualified ActionScript class name (for example mx.controls.Button rather than just Button). Flex 3 applications must be compiled with -compatibility-version=3.0.0 to get unqualified CSS type selector behavior.

QE: Yes, this build may help in updating test cases to use the new namespaces and class names.
Dev: Not yet
Doc: Not yet

Modified Paths:
--------------
748 paths were modified

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

--- frameworks/projects/spark/src/spark/effects/supportClasses/SetActionInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/SetActionInstance.as
@@ -9,7 +9,7 @@
 //
 ////////////////////////////////////////////////////////////////////////////////

-package mx.effects.effectClasses
+package spark.effects.supportClasses
 {

 import mx.core.mx_internal;


Transferred from the Adobe Open Source Subversion Repository

Revision: 11633
Author:   dsubrama@adobe.com
Date:     2009-11-11T00:25:59.826885Z

Log Message:
-----------
First half of the fix for SDK-23790 where we handle the alpha change correctly. The next half of the change is to set blendMode back to the appropriate value if/when a blendShader has been set.

QE notes: No
Doc notes: No
Bugs: SDK-23790 (half of the fix)
Reviewer: Corey
Tests run: Spark primitives, Spark core FXG, ScrollBar
Is noteworthy for integration: No

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as

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

--- frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
+++ frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
@@ -368,8 +368,22 @@
         var previous:Boolean = needsDisplayObject;
         _alpha = value;

+	// The product of _alpha and the designLayer's
+	// alpha is the effectiveAlpha which is
+	// committed in commitProperties()
         if (designLayer)
             value = value * designLayer.effectiveAlpha;
+
+        if (_blendMode == "auto")
+        {
+            // If alpha changes from an opaque/transparent (1/0) and translucent
+            // (0 < value < 1), then trigger a blendMode change
+            if ((value > 0 && value < 1 && (_effectiveAlpha == 0 || _effectiveAlpha == 1)) ||
+                ((value == 0 || value == 1) && (_effectiveAlpha > 0 && _effectiveAlpha < 1)))
+            {
+                blendModeChanged = true;
+            }
+        }

         _effectiveAlpha = value;


testcommit

testcommit

git-svn-id: 5c313c7b604ce6bf72d7224b35e7462ee01c5e2b@103 7a690eda-67ec-4556-b061-4c86d960b817

--- exe/SWPlayer/src/eu/screenwerk/components/SWSchedule.as
+++ exe/SWPlayer/src/eu/screenwerk/components/SWSchedule.as
@@ -1,6 +1,6 @@
 package eu.screenwerk.components
 {
-	import eu.screenwerk.SWCollection;
+	import eu.screenwerk.components.SWCollection;

 	import flash.filesystem.File;
 	import flash.utils.setTimeout;


Transferred from the Adobe Open Source Subversion Repository

Revision: 5067
Author:   smgilson@adobe.com
Date:     2009-02-25T16:21:22.849704Z

Log Message:
-----------
In preparation for adding ASDoc version tags for Flex, remove old tags from AIR files

QE Notes: None
Doc Notes: None
Bugs: -

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/core/windowClasses/TitleBar.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/core/windowClasses/StatusBar.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/events/WindowExistenceEvent.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@1249805 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/airframework/src/mx/core/IWindow.as
+++ frameworks/projects/airframework/src/mx/core/IWindow.as
@@ -19,7 +19,6 @@
  *  containers in Flex-based AIR applications (containers that represent operating
  *  system windows).
  *
- *  @playerversion AIR 1.1
  */
 public interface IWindow
 {
@@ -30,154 +29,154 @@
     //--------------------------------------------------------------------------

     //----------------------------------
-	//  maximizable
+    //  maximizable
     //----------------------------------

-	/**
-	 *  Specifies whether the window can be maximized.
-	 */
-	function get maximizable():Boolean;
-
+    /**
+     *  Specifies whether the window can be maximized.
+     */
+    function get maximizable():Boolean;
+
     //----------------------------------
-	//  minimizable
+    //  minimizable
     //----------------------------------

-	/**
-	 *  Specifies whether the window can be minimized.
-	 */
-	function get minimizable():Boolean;
-
+    /**
+     *  Specifies whether the window can be minimized.
+     */
+    function get minimizable():Boolean;
+
     //----------------------------------
-	//  nativeWindow
+    //  nativeWindow
     //----------------------------------

-	/**
-	 *  The underlying NativeWindow that the Window component uses.
-	 */
-	function get nativeWindow():NativeWindow
+    /**
+     *  The underlying NativeWindow that the Window component uses.
+     */
+    function get nativeWindow():NativeWindow

     //----------------------------------
-	//  resizable
+    //  resizable
     //----------------------------------

-	/**
-	 *  Specifies whether the window can be resized.
-	 */
-	function get resizable():Boolean;
-
+    /**
+     *  Specifies whether the window can be resized.
+     */
+    function get resizable():Boolean;
+
     //----------------------------------
-	//  status
+    //  status
     //----------------------------------

-	/**
-	 *  The string that appears in the status bar, if it is visible.
-	 */
-	function get status():String;
-
-	/**
-	 *  @private
-	 */
-	function set status(value:String):void;
-
+    /**
+     *  The string that appears in the status bar, if it is visible.
+     */
+    function get status():String;
+
+    /**
+     *  @private
+     */
+    function set status(value:String):void;
+
     //----------------------------------
-	//  systemChrome
+    //  systemChrome
     //----------------------------------

-	/**
-	 *  Specifies the type of system chrome (if any) the window has.
-	 *  The set of possible values is defined by the constants
-	 *  in the NativeWindowSystemChrome class.
-	 *
+    /**
+     *  Specifies the type of system chrome (if any) the window has.
+     *  The set of possible values is defined by the constants
+     *  in the NativeWindowSystemChrome class.
+     *
      *  @see flash.display.NativeWindowSystemChrome
-	 */
-	function get systemChrome():String;
-
+     */
+    function get systemChrome():String;
+
     //----------------------------------
-	//  title
+    //  title
     //----------------------------------

-	/**
-	 *  The title text that appears in the window title bar and
+    /**
+     *  The title text that appears in the window title bar and
      *  the taskbar.
-	 */
-	function get title():String;
-
-	/**
-	 *  @private
-	 */
-	function set title(value:String):void;
-
+     */
+    function get title():String;
+
+    /**
+     *  @private
+     */
+    function set title(value:String):void;
+
     //----------------------------------
-	//  titleIcon
+    //  titleIcon
     //----------------------------------

-	/**
-	 *  The Class (usually an image) used to draw the title bar icon.
-	 */
-	function get titleIcon():Class;
-
-	/**
-	 *  @private
-	 */
-	function set titleIcon(value:Class):void;
-
+    /**
+     *  The Class (usually an image) used to draw the title bar icon.
+     */
+    function get titleIcon():Class;
+
+    /**
+     *  @private
+     */
+    function set titleIcon(value:Class):void;
+
     //----------------------------------
-	//  transparent
+    //  transparent
     //----------------------------------

-	/**
-	 *  Specifies whether the window is transparent.
-	 */
-	function get transparent():Boolean;
-
+    /**
+     *  Specifies whether the window is transparent.
+     */
+    function get transparent():Boolean;
+
     //----------------------------------
-	//  type
+    //  type
     //----------------------------------

-	/**
-	 *  Specifies the type of NativeWindow that this component
-	 *  represents. The set of possible values is defined by the constants
-	 *  in the NativeWindowType class.
-	 *
-	 *  @see flash.display.NativeWindowType
-	 */
-	function get type():String;
-
+    /**
+     *  Specifies the type of NativeWindow that this component
+     *  represents. The set of possible values is defined by the constants
+     *  in the NativeWindowType class.
+     *
+     *  @see flash.display.NativeWindowType
+     */
+    function get type():String;
+
     //----------------------------------
-	//  visible
+    //  visible
     //----------------------------------

-	/**
-	 *  Controls the window's visibility.
-	 */
-	function get visible():Boolean;
-
+    /**
+     *  Controls the window's visibility.
+     */
+    function get visible():Boolean;
+
     //--------------------------------------------------------------------------
     //
     //  Methods
     //
     //--------------------------------------------------------------------------

-	/**
-	 *  Closes the window.
-	 */
-	function close():void;
-
-	/**
-	 *  Maximizes the window, or does nothing if it's already maximized.
-	 */
-	function maximize():void
-
-	/**
-	 *  Minimizes the window.
-	 */
-	function minimize():void;
-
-	/**
-	 *  Restores the window (unmaximizes it if it's maximized, or
+    /**
+     *  Closes the window.
+     */
+    function close():void;
+
+    /**
+     *  Maximizes the window, or does nothing if it's already maximized.
+     */
+    function maximize():void
+
+    /**
+     *  Minimizes the window.
+     */
+    function minimize():void;
+
+    /**
+     *  Restores the window (unmaximizes it if it's maximized, or
      *  unminimizes it if it's minimized).
-	 */
-	function restore():void;
+     */
+    function restore():void;
 }

 }


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

--- frameworks/projects/framework/src/mx/utils/ArrayUtil.as
+++ frameworks/projects/framework/src/mx/utils/ArrayUtil.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2004-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: 19682
Author:   rfrishbe@adobe.com
Date:     2011-01-10T23:17:37.383273Z

Log Message:
-----------
Fixing up how Group manages GraphicElements.  GraphicElements should still fall in to the normal LayoutManager pass; however, Group is in charge of calling the lifecycle methods directly on the graphic elements rather than LayoutManager calling them directly.  Before, the GraphicElement lifecycle methods were called from Group's commitProperties(), measure(), and updateDisplayList().  However, that means that depending on when super.method() is called from a subclass of Group, you weren't sure whether the graphicelements were validated yet or not.  With this change, this is now pushed in to validateProperties(), validateSize(), and validateDisplayList() to make it more consistent.  That way inside of subclass of Group in the updateDisplayList() method, you know that the graphic elements will have their display lists validated after the fact.

QE notes:
Doc notes:
Bugs: SDK-25912
Reviewer: Evtim
Tests run: checkintests, complete mustella cyclone
Is noteworthy for integration: No

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Group.as

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

--- frameworks/projects/spark/src/spark/components/Group.as
+++ frameworks/projects/spark/src/spark/components/Group.as
@@ -853,6 +853,28 @@
     /**
      *  @private
      */
+    override public function validateProperties():void
+    {
+        super.validateProperties();
+
+        // Property validation happens top-down, so now let's
+        // validate graphic element properties after
+        // calling super.validateProperties()
+        if (numGraphicElements > 0)
+        {
+            var length:int = numElements;
+            for (var i:int = 0; i < length; i++)
+            {
+                var element:IGraphicElement = getElementAt(i) as IGraphicElement;
+                if (element)
+                    element.validateProperties();
+            }
+        }
+    }
+
+    /**
+     *  @private
+     */
     override protected function commitProperties():void
     {
         super.commitProperties();
@@ -951,18 +973,6 @@
             if (isValidScaleGrid())
                 resizeMode = ResizeMode.SCALE; // Force the resizeMode to scale
         }
-
-        // Validate element properties
-        if (numGraphicElements > 0)
-        {
-            var length:int = numElements;
-            for (var i:int = 0; i < length; i++)
-            {
-                var element:IGraphicElement = getElementAt(i) as IGraphicElement;
-                if (element)
-                    element.validateProperties();
-            }
-        }
     }

     /**
@@ -973,7 +983,9 @@
         // Since IGraphicElement is not ILayoutManagerClient, we need to make sure we
         // validate sizes of the elements, even in cases where recursive==false.

-        // Validate element size
+        // Size validation happens bottom-up, so now let's
+        // validate graphic element size before
+        // calling super.validateSize()
         if (numGraphicElements > 0)
         {
             var length:int = numElements;
@@ -1009,39 +1021,31 @@
     /**
      *  @private
      */
-    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
-    {
-        super.updateDisplayList(unscaledWidth, unscaledHeight);
+    override public function validateDisplayList():void
+    {
+        // call super.validateDisplayList() and let updateDisplayList() run
+        super.validateDisplayList();

         // If the DisplayObject assignment is still not completed, then postpone validation
-        // of the GraphicElements
+        // of the GraphicElements. invalidateDisplayList() will be called during the next
+        // commitProperties() call since needsDisplayObjectAssignment=true,
+        // so we will be re-running validateDisplayList() anyways
         if (needsDisplayObjectAssignment && invalidatePropertiesFlag)
             return;

-        // Clear the group's graphic because graphic elements might be drawing to it
-        // This isn't needed for DataGroup because there's no DisplayObject sharing
-        var sharedDisplayObject:ISharedDisplayObject = this;
-        if (sharedDisplayObject.redrawRequested)
-        {
-            graphics.clear();
-            drawBackground();
-
-            // If a scaleGrid is set, make sure the extent of the groups bounds are filled so
-            // the player will scale our contents as expected.
-            if (isValidScaleGrid() && resizeMode == ResizeMode.SCALE)
-            {
-                graphics.lineStyle();
-                graphics.beginFill(0, 0);
-                graphics.drawRect(0, 0, 1, 1);
-                graphics.drawRect(measuredWidth - 1, measuredHeight - 1, 1, 1);
-                graphics.endFill();
-            }
-        }
-
+        // DisplayList validation happens top-down, so we should
+        // validate graphic element DisplayList after
+        // calling super.validateDisplayList().  This is
+        // gets tricky because of graphic-element sharing.  We clear
+        // Group's graphic's object in updateDisplayList() and handle the
+        // rest of the DisplayList validation in here.
+
         // Iterate through the graphic elements. If an element has a displayObject that has been
         // invalidated, then validate all graphic elements that draw to this displayObject.
         // The algorithm assumes that all of the elements that share a displayObject are in between
         // the element with the shared displayObject and the next element that has a displayObject.
+
+        var sharedDisplayObject:ISharedDisplayObject = this;
         if (numGraphicElements > 0)
         {
             var length:int = numElements;
@@ -1049,8 +1053,8 @@
             {
                 var element:IGraphicElement = getElementAt(i) as IGraphicElement;
                 if (!element)
-                   continue;
-
+                    continue;
+
                 // Do a special check for layer, we may stumble upon an element with layer != 0
                 // before we're done with the current shared sequence and we don't want to mark
                 // the sequence as valid, until we reach the next sequence.
@@ -1077,18 +1081,60 @@
                     var elementDisplayObject:ISharedDisplayObject = element.displayObject as ISharedDisplayObject;
                     if (!elementDisplayObject || elementDisplayObject.redrawRequested)
                     {
-                       element.validateDisplayList();
-
-                       if (elementDisplayObject)
-                           elementDisplayObject.redrawRequested = false;
+                        element.validateDisplayList();
+
+                        if (elementDisplayObject)
+                            elementDisplayObject.redrawRequested = false;
                     }
                 }
             }
         }
-
+
         // Mark the last shared displayObject valid
         if (sharedDisplayObject)
             sharedDisplayObject.redrawRequested = false;
+    }
+
+    /**
+     *  @private
+     */
+    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+    {
+        // let user's code (layout) run first before dealing with graphic element
+        // sharing because that's when redraws can be requested
+        super.updateDisplayList(unscaledWidth, unscaledHeight);
+
+        // Clear the group's graphic because graphic elements might be drawing to it
+        // This isn't needed for DataGroup because there's no DisplayObject sharing
+        // This code exists in updateDisplayList() as opposed to validateDisplayList()
+        // because of compatibility issues since most of this code was
+        // refactored from updateDisplayList() and in to validateDisplayList().  User's code
+        // already assumed that they could call super.updateDisplayList() and then be able to draw
+        // into the Group's graphics object.  Because of that, the graphics.clear() call is left
+        // in updateDisplayList() instead of in validateDisplayList() with the rest of the graphic
+        // element sharing code.
+        var sharedDisplayObject:ISharedDisplayObject = this;
+        if (sharedDisplayObject.redrawRequested)
+        {
+            // clear the graphics here.  The pattern is usually to call graphics.clear()
+            // before calling super.updateDisplayList() so what happens in super.updateDisplayList()
+            // isn't erased.  However, in this case, what happens in super.updateDisplayList() isn't
+            // much, and we want to make sure super.updateDisplayList() runs first since the layout
+            // is what actually triggers the the shareDisplayObject to request to be redrawn.
+            graphics.clear();
+            drawBackground();
+
+            // If a scaleGrid is set, make sure the extent of the groups bounds are filled so
+            // the player will scale our contents as expected.
+            if (isValidScaleGrid() && resizeMode == ResizeMode.SCALE)
+            {
+                graphics.lineStyle();
+                graphics.beginFill(0, 0);
+                graphics.drawRect(0, 0, 1, 1);
+                graphics.drawRect(measuredWidth - 1, measuredHeight - 1, 1, 1);
+                graphics.endFill();
+            }
+        }

         if (scaleGridChanged)
         {


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

--- frameworks/projects/framework/src/mx/effects/effectClasses/MaskEffectInstance.as
+++ frameworks/projects/framework/src/mx/effects/effectClasses/MaskEffectInstance.as
@@ -67,6 +67,11 @@
  *
  *  @see mx.effects.MaskEffect
  *  @see mx.events.TweenEvent
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class MaskEffectInstance extends EffectInstance
 {
@@ -82,6 +87,11 @@
 	 *  Constructor.
 	 *
 	 *  @param target The Object to animate with this effect.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function MaskEffectInstance(target:Object)
 	{
@@ -99,12 +109,22 @@
 	 *  by the defaultCreateMask() method,
 	 *  or the one specified by the function passed to the
 	 *  createMaskFunction property.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	protected var effectMask:Shape;

 	/**
 	 *  The actual size of the effect target, including any drop shadows.
 	 *  Flex calculates the value of this property; you do not have to set it.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	protected var targetVisualBounds:Rectangle;

@@ -216,6 +236,11 @@
 	 *
 	 *

 	 *    <mx:WipeLeft id="showWL" createMaskFunction="createLargeMask" showTarget="false"/>

+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get createMaskFunction():Function
 	{
@@ -238,6 +263,11 @@

 	/**
 	 *  Easing function to use for moving the mask.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var moveEasingFunction:Function;

@@ -289,6 +319,11 @@

 	/**
 	 *  Easing function to use for scaling the mask.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var scaleEasingFunction:Function;

@@ -298,6 +333,11 @@

 	/**
 	 *  Initial scaleX for mask.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var scaleXFrom:Number;

@@ -307,6 +347,11 @@

 	/**
 	 *  Ending scaleX for mask.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var scaleXTo:Number;

@@ -316,6 +361,11 @@

 	/**
 	 *  Initial scaleY for mask.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var scaleYFrom:Number;

@@ -325,6 +375,11 @@

 	/**
 	 *  Ending scaleY for mask.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var scaleYTo:Number;

@@ -350,6 +405,11 @@
      *  false, or invisible, true.
 	 *
 	 *  @default true
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get showTarget():Boolean
 	{
@@ -374,6 +434,11 @@
 	 *  The dimensions are relative to the target itself.
 	 *  By default, the area is the entire target and is created like this:
 	 *  new Rectangle(0, 0, target.width, target.height);
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var targetArea:Rectangle;

@@ -383,6 +448,11 @@

 	/**
 	 *  Initial position's x coordinate for mask.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var xFrom:Number;

@@ -392,6 +462,11 @@

 	/**
 	 *  Destination position's x coordinate for mask.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var xTo:Number;

@@ -401,6 +476,11 @@

 	/**
 	 *  Initial position's y coordinate for mask.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var yFrom:Number;

@@ -410,6 +490,11 @@

 	/**
 	 *  Destination position's y coordinate for mask.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var yTo:Number;

@@ -547,6 +632,11 @@

 	/**
 	 *  Pauses the effect until you call the resume() method.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	override public function pause():void
 	{
@@ -577,6 +667,11 @@
 	/**
 	 *  Resumes the effect after it has been paused
 	 *  by a call to the pause() method.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	override public function resume():void
 	{
@@ -592,6 +687,11 @@
 	/**
 	 *  Plays the effect in reverse,
 	 *  starting from the current position of the effect.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	override public function reverse():void
 	{
@@ -698,6 +798,11 @@
 	 *  @param bounds The actual visual bounds of the target which includes drop shadows
 	 *
 	 *  @return A Shape object that defines the mask.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	protected function defaultCreateMask(targ:Object, bounds:Rectangle):Shape
 	{
@@ -748,6 +853,11 @@
 	 *  All subclasses should override this function.
 	 *  Flex calls it after the mask has been created,
 	 *  but before the tweens are created.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	protected function initMaskEffect():void
 	{
@@ -800,6 +910,11 @@
 	 *  x and y value for the mask position, where value[0]
 	 *  contains the new x position of the mask,
 	 *  and value[1] contains the new y position.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	protected function onMoveTweenUpdate(value:Object):void
 	{
@@ -825,6 +940,11 @@
 	 *  x and y value for the mask position, where value[0]
 	 *  contains the x position of the mask,
 	 *  and value[1] contains the y position.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	protected function onMoveTweenEnd(value:Object):void
 	{
@@ -845,6 +965,11 @@
 	 *  where value[0]
 	 *  contains the new scaleX value of the mask,
 	 *  and value[1] contains the new scaleY value.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	protected function onScaleTweenUpdate(value:Object):void
 	{
@@ -869,6 +994,11 @@
 	 *  where value[0]
 	 *  contains the scaleX value of the mask,
 	 *  and value[1] contains the scaleY value.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	protected function onScaleTweenEnd(value:Object):void
 	{


Widened wires

Widened wires

--- src/Displays/DLink.as
+++ src/Displays/DLink.as
@@ -85,45 +85,49 @@
 										   Math.floor((source.y + dest.y) / 2));
 			var primaryHorizontal:Boolean = Math.abs(source.x - dest.x) >= Math.abs(source.y - dest.y);

-			var width:int = getWidth();
-
 			//TODO: split up very long wires
 			if (primaryHorizontal) {
-				cachedLines.push(new FlxSprite(
-					Math.min(source.x, midpoint.x) * U.GRID_DIM - width/2,
-					source.y * U.GRID_DIM - width / 2
-				).makeGraphic(Math.abs(source.x - midpoint.x) * U.GRID_DIM + width, width, 0xffffffff, true));
-
-				cachedLines.push(new FlxSprite(
-					midpoint.x * U.GRID_DIM - width/2,
-					Math.min(source.y, dest.y) * U.GRID_DIM - width/2
-				).makeGraphic(width, Math.abs(source.y - dest.y) * U.GRID_DIM + width, 0xffffffff, true));
-
-				cachedLines.push(new FlxSprite(
-					Math.min(midpoint.x, dest.x) * U.GRID_DIM - width/2,
-					dest.y * U.GRID_DIM - width/2
-				).makeGraphic(Math.abs(midpoint.x - dest.x) * U.GRID_DIM + width, width, 0xffffffff, true));
-			} else {
-				cachedLines.push(new FlxSprite(
-					source.x * U.GRID_DIM - width/2,
-					Math.min(source.y, midpoint.y) * U.GRID_DIM - width/2
-				).makeGraphic(width, Math.abs(source.y - midpoint.y) * U.GRID_DIM + width, 0xffffffff, true));
-
-				cachedLines.push(new FlxSprite(
-					Math.min(source.x, dest.x) * U.GRID_DIM - width/2,
-					midpoint.y * U.GRID_DIM - width/2
-				).makeGraphic(Math.abs(source.x - dest.x) * U.GRID_DIM + width, width, 0xffffffff, true));
-
-				cachedLines.push(new FlxSprite(
-					dest.x * U.GRID_DIM - width/2,
-					Math.min(midpoint.y, dest.y) * U.GRID_DIM - width/2
-				).makeGraphic(width, Math.abs(midpoint.y - dest.y) * U.GRID_DIM + width, 0xffffffff, true));
-			}
-
+				cachedLines.push(makeCachedLine(Math.min(source.x, midpoint.x), source.y, Math.abs(source.x - midpoint.x), true));
+				cachedLines.push(makeCachedLine(midpoint.x, Math.min(source.y, dest.y), Math.abs(source.y - dest.y), false));
+				cachedLines.push(makeCachedLine(Math.min(midpoint.x, dest.x), dest.y, Math.abs(dest.x - midpoint.x), true));
+			} else {
+				cachedLines.push(makeCachedLine(source.x, Math.min(source.y, midpoint.y), Math.abs(source.y - midpoint.y), false));
+				cachedLines.push(makeCachedLine(Math.min(source.x, dest.x), midpoint.y, Math.abs(source.x - dest.x), true));
+				cachedLines.push(makeCachedLine(dest.x, Math.min(midpoint.y, dest.y), Math.abs(dest.y - midpoint.y), true));
+			}

 			cachedZoom = U.zoom;
 			cachedStart = link.source.Loc.clone();
 			cachedEnd = link.destination.Loc.clone();
+		}
+
+		private function makeCachedLine(X:int, Y:int, Length:int, Horizontal:Boolean):FlxSprite {
+			X *= U.GRID_DIM;
+			Y *= U.GRID_DIM;
+			Length *= U.GRID_DIM;
+			var thickness:int = getWidth();
+			var fullThickness:int = thickness + EXTRA_WIDTH;
+
+			var line:FlxSprite = new FlxSprite(X - fullThickness/2, Y - fullThickness/2);
+
+			var width:int, height:int;
+			if (Horizontal) {
+				width = Length + thickness;
+				height = thickness;
+
+			} else {
+				height = Length + thickness;
+				width = thickness;
+			}
+
+			line.makeGraphic(width, height, 0xffffffff, true);
+
+			line.height += EXTRA_WIDTH / 2;
+			line.offset.y = - EXTRA_WIDTH / 2;
+			line.width += EXTRA_WIDTH / 2;
+			line.offset.x = - EXTRA_WIDTH / 2;
+
+			return line;
 		}

 		protected function drawCached():void {
@@ -215,6 +219,9 @@
 					return U.UNCONNECTED_COLOR;
 				return 0xff000000;
 			}
+
+			if (overlapsPoint(FlxG.mouse))
+				return U.HIGHLIGHTED_COLOR;
 			return 0xff000000; //TODO
 		}

@@ -239,14 +246,28 @@
 		override public function overlapsPoint(p:FlxPoint, _:Boolean=false, __:FlxCamera=null):Boolean {
 			if (!link.exists) return false;

-			//TODO: implement
+			if (!link.deployed)
+				return false; //? not implemented
+
+			//could check bbox here?
+			//check wires
+			for each (var line:FlxSprite in cachedLines)
+				if (line.overlapsPoint(p, _, __))
+					return true;
 			return false;
 		}

 		override public function overlaps(o:FlxBasic, _:Boolean=false, __:FlxCamera=null):Boolean {
 			if (!link.exists) return false;

-			//TODO: implement
+			if (!link.deployed)
+				return false; //? not implemented
+
+			//could check bbox here?
+			//check wires
+			for each (var line:FlxSprite in cachedLines)
+				if (line.overlaps(o, _, __))
+					return true;
 			return false;
 		}


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package mx.managers
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 21960
Author:   aaltman@adobe.com
Date:     2011-08-12T21:09:59.193901Z

Log Message:
-----------
Gave StageTextAreaSkin the same default height as mobile TextAreaSkin
Fixed StageText-based skins to not send negative dimensions to StageText
Fixed popup visibility event dispatching and handling by StyleableStageText

QE notes: None
Doc notes: None
Bugs: SDK-31154, SDK-31128, SDK-31111, SDK-31062, SDK-30976
Reviewer: cframpto, aharui
Tests run: checkintests, mustella, mustella-AIR, mustella-mobile, mxunit
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableStageText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextInputSkin.as</path>

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

--- frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as
+++ frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as
@@ -868,6 +868,17 @@

     }

+    private function setModalPopupVisible(popup:DisplayObject, value:Boolean):void
+    {
+        popup.removeEventListener(FlexEvent.SHOW, popupShowHandler);
+        popup.removeEventListener(FlexEvent.HIDE, popupHideHandler);
+
+        popup.visible = value;
+
+        popup.addEventListener(FlexEvent.SHOW, popupShowHandler);
+        popup.addEventListener(FlexEvent.HIDE, popupHideHandler);
+    }
+
     /**
      *  @private
      *  Show the modal transparency blocker, playing effects if needed.
@@ -899,7 +910,7 @@
             o.fade = fade;

             if (o.owner)
-                IUIComponent(o.owner).setVisible(false, true);
+                setModalPopupVisible(o.owner, false);

             fade.play();

@@ -946,7 +957,7 @@
         else
         {
             if (o.owner)
-                IUIComponent(o.owner).setVisible(true, true);
+                setModalPopupVisible(o.owner, true);
             o.modalWindow.visible = true;
         }
     }
@@ -1219,7 +1230,7 @@
             var o:PopUpData = popupInfo[i];
             if (o.owner && o.modalWindow == event.effectInstance.target)
             {
-                IUIComponent(o.owner).setVisible(true, true);
+                setModalPopupVisible(o.owner, true);
                 break;
             }
         }


Added tab to illegal character list

Added tab to illegal character list


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/spark/src/spark/effects/animation/Keyframe.as
+++ frameworks/projects/spark/src/spark/effects/animation/Keyframe.as
@@ -212,4 +212,4 @@
     public var valueBy:Object;

 }
-}+}


Update Context3D.as

Update Context3D.as

--- src/flash/display3D/Context3D.as
+++ src/flash/display3D/Context3D.as
@@ -145,6 +145,7 @@
 				gl.bindBuffer(gl.ARRAY_BUFFER, buffer.buff);
 				var type:int = gl.FLOAT;
 				var size:int = 0;
+				var mul:int=4;
 				var normalized:Boolean = false;
 				switch (format)
 				{
@@ -164,9 +165,10 @@
 					size = 4;
 					type = gl.UNSIGNED_BYTE;
 					normalized = true;
+					mul = 1;
 					break;
 				}
-				gl.vertexAttribPointer(loc, size, type, normalized, buffer.data32PerVertex * 4, bufferOffset*4);
+				gl.vertexAttribPointer(loc, size, type, normalized, buffer.data32PerVertex * mul, bufferOffset*mul);
 			}
 		}


updated documentation

updated documentation

--- WeaveData/src/weave/data/CSVParser.as
+++ WeaveData/src/weave/data/CSVParser.as
@@ -55,8 +55,8 @@
 		 *                  If this is set to false, no callback collection will be generated
 		 *                  for this instance of CSVParser as a result of calling its methods.
 		 *                  Note that if asyncMode is enabled, you can only parse one CSV string at a time.
-		 * @param delimiter
-		 * @param quote
+		 * @param delimiter A single character for the delimiter
+		 * @param quote A single character for the quote
 		 */
 		public function CSVParser(asyncMode:Boolean = false, delimiter:String = ',', quote:String = '"')
 		{


Use a Timer instead of ENTER_FRAME.
This is a potentially more dangerous change, but nothing
seems awry. Eyes peeled!

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

--- src/as/com/threerings/util/MethodQueue.as
+++ src/as/com/threerings/util/MethodQueue.as
@@ -21,9 +21,9 @@

 package com.threerings.util {

-import flash.display.Sprite;
+import flash.events.TimerEvent;

-import flash.events.Event;
+import flash.utils.Timer;

 /**
  * A simple mechanism for queueing functions to be called on the next frame.
@@ -37,15 +37,13 @@
     public static function callLater (fn :Function, args :Array = null) :void
     {
         _methodQueue.push([fn, args]);
-        if (!_d.hasEventListener(Event.ENTER_FRAME)) {
-            _d.addEventListener(Event.ENTER_FRAME, handleEnterFrame);
-        }
+        _t.start(); // starts the timer if it's not already running
     }

     /**
-     * Handle a frame event: call any queued functions.
+     * Handle a timer event: call any queued functions.
      */
-    protected static function handleEnterFrame (event :Event) :void
+    protected static function handleTimer (event :TimerEvent) :void
     {
         // swap out the working set
         var methods :Array = _methodQueue;
@@ -65,16 +63,19 @@
         }

         // If no new functions were added while we were calling the current set,
-        // then remove the listener.
+        // then stop firing
         if (_methodQueue.length == 0) {
-            _d.removeEventListener(Event.ENTER_FRAME, handleEnterFrame);
+            _t.stop();
         }
     }

-    /** A display object on which we listen for ENTER_FRAME. */
-    protected static var _d :Sprite = new Sprite();
+    /** A timer that will fire as quickly as possible. */
+    protected static var _t :Timer = new Timer(1);

     /** The currently queued functions. */
     protected static var _methodQueue :Array = [];
+
+    // a bit of static initialization
+    _t.addEventListener(TimerEvent.TIMER, handleTimer);
 }
 }


Улучшение TextFieldBuilder

Улучшение TextFieldBuilder

--- src/main/org/shypl/common/util/TextFieldBuilder.as
+++ src/main/org/shypl/common/util/TextFieldBuilder.as
@@ -72,8 +72,9 @@
 			return filed;
 		}

-		public function setFont(value:String):TextFieldBuilder {
+		public function setFont(value:String, embed:Boolean = true):TextFieldBuilder {
 			_font = value;
+			_embedFonts = embed;
 			return this;
 		}


Add logic to PortalModel to determine if the user can sign out.

--- src/com/esri/builder/model/PortalModel.as
+++ src/com/esri/builder/model/PortalModel.as
@@ -16,7 +16,10 @@
 package com.esri.builder.model
 {

+import com.esri.ags.components.IdentityManager;
+import com.esri.ags.components.supportClasses.Credential;
 import com.esri.ags.portal.Portal;
+import com.esri.builder.supportClasses.PortalUtil;
 import com.esri.builder.supportClasses.URLUtil;

 import flash.events.Event;
@@ -67,6 +70,12 @@
     {
         const previousDefaultPortalURL:String = "http://www.arcgis.com/";
         return url.replace(previousDefaultPortalURL, DEFAULT_PORTAL_URL);
+    }
+
+    public function canSignOut():Boolean
+    {
+        var credential:Credential = IdentityManager.instance.findCredential(PortalUtil.toPortalSharingURL(portal.url));
+        return portal.signedIn && (credential != null);
     }

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 7256
Author:   aharui@adobe.com
Date:     2009-05-23T20:25:20.378550Z

Log Message:
-----------
Fix various Mustella failures due to frame1 cleanup

QE Notes: None
Doc Notes: None
Bugs: SDK-21372, SDK-21373, SDK-21374
Reviewer: Joan tested a cyclone
tests: checkintests mustella/components mustella/MarshallPlan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/ActiveWindowManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/MarshallPlan.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManagerProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/EmbeddedFontRegistry.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ToolTipManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/ToolTipManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/FocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/EmbeddedFont.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/FocusManagerMarshalMixin.as</path>

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

--- frameworks/projects/framework/src/mx/managers/ToolTipManagerImpl.as
+++ frameworks/projects/framework/src/mx/managers/ToolTipManagerImpl.as
@@ -29,6 +29,7 @@
 import mx.core.mx_internal;
 import mx.effects.IAbstractEffect;
 import mx.effects.EffectManager;
+import mx.events.DynamicEvent;
 import mx.events.EffectEvent;
 import mx.events.ToolTipEvent;
 import mx.managers.IToolTipManagerClient;
@@ -1241,7 +1242,10 @@
             // End any show or hide effects that might be playing on it.
             EffectManager.endEffectsForTarget(currentToolTip);

-			if (dispatchEvent(new Event("removeChild", false, true)))
+            var e:DynamicEvent = new DynamicEvent("removeChild", false, true);
+            e.sm = currentToolTip.systemManager;
+            e.toolTip = currentToolTip;
+		    if (dispatchEvent(e))
 			{
 				// Remove it.
 				var sm:ISystemManager = currentToolTip.systemManager as ISystemManager;
@@ -1330,7 +1334,10 @@
                                           FlexGlobals.topLevelApplication.systemManager as ISystemManager;

-		if (dispatchEvent(new Event("addChild", false, true)))
+        var event:DynamicEvent = new DynamicEvent("addChild", false, true);
+        event.sm = sm;
+        event.toolTip = toolTip;
+		if (dispatchEvent(event))
 		{
 		    sm.topLevelSystemManager.toolTipChildren.addChild(toolTip as DisplayObject);
 		}
@@ -1374,7 +1381,10 @@
      */
     public function destroyToolTip(toolTip:IToolTip):void
     {
-		if (dispatchEvent(new Event("removeChild", false, true)))
+        var e:DynamicEvent = new DynamicEvent("removeChild", false, true);
+        e.sm = toolTip.systemManager;
+        e.toolTip = toolTip;
+		if (dispatchEvent(e))
 		{
 			// Remove it.
 			var sm:ISystemManager = toolTip.systemManager as ISystemManager;