Transferred from the Adobe Open Source Subversion Repository

Revision: 19767
Author:   aharui@adobe.com
Date:     2011-01-14T18:00:12.563159Z

Log Message:
-----------
Upgrade IconItemRenderer and ViewNavigatorBase to use MultiDPIBitmapSource

QE notes: Ryan says he'll change the name of the decoratorClass property in a later change list
Doc notes:  see QE notes
Bugs: SDK-29081, SDK-29082
Reviewer: Ryan, Chiedo
Tests run: checkintests
Is noteworthy for integration: no

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

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

--- frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as
+++ frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as
@@ -14,11 +14,13 @@
 import flash.display.DisplayObject;
 import flash.events.TimerEvent;
 import flash.net.URLRequest;
+import flash.system.Capabilities;
 import flash.text.TextFieldType;
 import flash.text.TextLineMetrics;
 import flash.utils.Timer;

 import mx.controls.listClasses.*;
+import mx.core.FlexGlobals;
 import mx.core.DPIClassification;
 import mx.core.IFlexDisplayObject;
 import mx.core.IVisualElement;
@@ -29,6 +31,7 @@
 import mx.graphics.BitmapFillMode;
 import mx.graphics.BitmapScaleMode;
 import mx.styles.CSSStyleDeclaration;
+import mx.utils.DensityUtil;

 import spark.components.supportClasses.StyleableTextField;
 import spark.core.ContentCache;
@@ -38,6 +41,7 @@
 import spark.core.IGraphicElementContainer;
 import spark.core.ISharedDisplayObject;
 import spark.primitives.BitmapImage;
+import spark.utils.MultiDPIBitmapSource;

 use namespace mx_internal;

@@ -309,6 +313,27 @@
      */
     private var oldUnscaledWidth:Number;

+    /**
+     *  @private
+     *  Since decoratorDisplay is a GraphicElement, we have to call its lifecycle methods
+     *  directly.
+     */
+    private var decoratorNeedsValidateProperties:Boolean = false;
+
+    /**
+     *  @private
+     *  Since decoratorDisplay is a GraphicElement, we have to call its lifecycle methods
+     *  directly.
+     */
+    private var decoratorNeedsValidateSize:Boolean = false;
+
+    /**
+     *  @private
+     *  Since decoratorDisplay is a GraphicElement, we have to call help assign
+     *  its display object
+     */
+    private var decoratorNeedsDisplayObjectAssignment:Boolean = false;
+
     //--------------------------------------------------------------------------
     //
     //  Public Properties: Overridden
@@ -412,7 +437,7 @@
     /**
      *  @private
      */
-    private var _decoratorClass:Class;
+    private var _decoratorClass:Object;

     /**
      *  @private
@@ -420,6 +445,15 @@
     private var decoratorClassChanged:Boolean;

     /**
+     *  @private
+     *  The class to use when instantiating the decorator for IconItemRenderer.
+     *  This class must extend spark.primitives.BitmapImage.
+     *  This property was added for Design View so they can set this to a special
+     *  subclass of BitmapImage that knows how to load and resolve resources in Design View.
+     */
+    mx_internal var decoratorDisplayClass:Class = BitmapImage;
+
+    /**
      *  The display object component used to
      *  display the decorator for this item renderer.
      *
@@ -430,7 +464,7 @@
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
-    protected var decoratorDisplay:DisplayObject;
+    protected var decoratorDisplay:BitmapImage;

     /**
      *  The decorator icon that appears on the right side
@@ -439,6 +473,9 @@
      *
The decorator icon ignores the verticalAlign style
      *  and is always centered vertically.

      *
+     *
The decorator icon is expected to be an embedded asset.  There can
+     *  be performance degradation if using external assets.

+     *
      *  @default ""
      *
      *  @langversion 3.0
@@ -446,7 +483,7 @@
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
-    public function get decoratorClass():Class
+    public function get decoratorClass():Object
     {
         return _decoratorClass;
     }
@@ -454,7 +491,7 @@
     /**
      *  @private
      */
-    public function set decoratorClass(value:Class):void
+    public function set decoratorClass(value:Object):void
     {
         if (value == _decoratorClass)
             return;
@@ -890,7 +927,7 @@
     /**
      *  @private
      */
-    private var _loadingIconClass:Class;
+    private var _loadingIconClass:Object;

     /**
      *  The icon asset to use while an externally loaded asset is
@@ -903,7 +940,7 @@
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
-    public function get loadingIconClass():Class
+    public function get loadingIconClass():Object
     {
         return _loadingIconClass;
     }
@@ -911,7 +948,7 @@
     /**
      *  @private
      */
-    public function set loadingIconClass(value:Class):void
+    public function set loadingIconClass(value:Object):void
     {
         if (value == _loadingIconClass)
             return;
@@ -1100,9 +1137,12 @@
      */
     public function invalidateGraphicElementSharing(element:IGraphicElement):void
     {
-        // since the only graphic element is hooked up to drawing with the background,
+        // since the only graphic elements are hooked up to drawing with the background,
         // just invalidate display list
-        iconNeedsDisplayObjectAssignment = true;
+        if (element == iconDisplay)
+            iconNeedsDisplayObjectAssignment = true;
+        else if (element == decoratorDisplay)
+            decoratorNeedsDisplayObjectAssignment = true;
         invalidateProperties();
     }

@@ -1124,7 +1164,10 @@
      */
     public function invalidateGraphicElementProperties(element:IGraphicElement):void
     {
-        iconNeedsValidateProperties = true;
+        if (element == iconDisplay)
+            iconNeedsValidateProperties = true;
+        else if (element == decoratorDisplay)
+            decoratorNeedsValidateProperties = true;
         invalidateProperties();
     }

@@ -1146,7 +1189,10 @@
      */
     public function invalidateGraphicElementSize(element:IGraphicElement):void
     {
-        iconNeedsValidateSize = true;
+        if (element == iconDisplay)
+            iconNeedsValidateSize = true;
+        else if (element == decoratorDisplay)
+            decoratorNeedsValidateSize = true;
         invalidateSize();
     }

@@ -1231,24 +1277,41 @@
      */
     override protected function commitProperties():void
     {
+        var oldDisplayObject:DisplayObject;
+
         super.commitProperties();

         if (decoratorClassChanged)
         {
             decoratorClassChanged = false;

-            // if there's an old one, remove it
-            if (decoratorDisplay)
-            {
-                removeChild(decoratorDisplay);
+            // let's see if we need to create or remove it
+            if (decoratorClass && !decoratorDisplay)
+            {
+                // need to create it
+
+                decoratorDisplay = new decoratorDisplayClass();
+                decoratorDisplay.parentChanged(this);
+                decoratorDisplay.source = decoratorClass;
+
+                decoratorNeedsDisplayObjectAssignment = true;
+            }
+            else if (!decoratorClass && decoratorDisplay)
+            {
+                // need to remove the display object
+                oldDisplayObject = decoratorDisplay.displayObject;
+                if (oldDisplayObject)
+                {
+                    // If the element created the display object
+                    if (iconDisplay.displayObjectSharingMode != DisplayObjectSharingMode.USES_SHARED_OBJECT &&
+                        oldDisplayObject.parent == this)
+                    {
+                        removeChild(oldDisplayObject);
+                    }
+                }
+
+                decoratorDisplay.parentChanged(null);
                 decoratorDisplay = null;
-            }
-
-            // if we need to create it, do it here
-            if (decoratorClass)
-            {
-                decoratorDisplay = new _decoratorClass();
-                addChild(decoratorDisplay);
             }

             invalidateSize();
@@ -1282,7 +1345,7 @@
             else if (!(iconField || (iconFunction != null)) && iconDisplay)
             {
                 // need to remove the display object
-                var oldDisplayObject:DisplayObject = iconDisplay.displayObject;
+                oldDisplayObject = iconDisplay.displayObject;
                 if (oldDisplayObject)
                 {
                     // If the element created the display object
@@ -1465,43 +1528,65 @@
         if (iconNeedsDisplayObjectAssignment)
         {
             iconNeedsDisplayObjectAssignment = false;
-            if (iconDisplay)
-            {
-                // try using this display object first
-                if (iconDisplay.setSharedDisplayObject(this))
-                {
-                    iconDisplay.displayObjectSharingMode = DisplayObjectSharingMode.USES_SHARED_OBJECT;
-                }
-                else
-                {
-                    // if we can't use this as the display object, then let's see if
-                    // the icon already has and owns a display object
-                    var ownsDisplayObject:Boolean = (iconDisplay.displayObjectSharingMode != DisplayObjectSharingMode.USES_SHARED_OBJECT);
-
-                    // If the element doesn't have a DisplayObject or it doesn't own
-                    // the DisplayObject it currently has, then create a new one
-                    var displayObject:DisplayObject = iconDisplay.displayObject;
-                    if (!ownsDisplayObject || !displayObject)
-                        displayObject = iconDisplay.createDisplayObject();
-
-                    // Add the display object as a child
-                    // Check displayObject for null, some graphic elements
-                    // may choose not to create a DisplayObject during this pass.
-                    if (displayObject)
-                        addChild(displayObject);
-
-                    iconDisplay.displayObjectSharingMode = DisplayObjectSharingMode.OWNS_UNSHARED_OBJECT;
-                }
-            }
-
-        }
-
+            assignDisplayObject(iconDisplay);
+        }
+
+        if (decoratorNeedsDisplayObjectAssignment)
+        {
+            decoratorNeedsDisplayObjectAssignment = false;
+            assignDisplayObject(decoratorDisplay);
+        }
+
+        // FIXME (rfrishbe): Move the graphic element validations from commitProperties()
+        // and udl() in to the validateXXX() methods.
         if (iconNeedsValidateProperties)
         {
-            iconNeedsDisplayObjectAssignment = false;
+            iconNeedsValidateProperties = false;
             if (iconDisplay)
                 iconDisplay.validateProperties();
         }
+
+        if (decoratorNeedsValidateProperties)
+        {
+            decoratorNeedsValidateProperties = false;
+            if (decoratorDisplay)
+                decoratorDisplay.validateProperties();
+        }
+    }
+
+    /**
+     *  @private
+     */
+    private function assignDisplayObject(bitmapImage:BitmapImage):void
+    {
+        if (bitmapImage)
+        {
+            // try using this display object first
+            if (bitmapImage.setSharedDisplayObject(this))
+            {
+                bitmapImage.displayObjectSharingMode = DisplayObjectSharingMode.USES_SHARED_OBJECT;
+            }
+            else
+            {
+                // if we can't use this as the display object, then let's see if
+                // the icon already has and owns a display object
+                var ownsDisplayObject:Boolean = (bitmapImage.displayObjectSharingMode != DisplayObjectSharingMode.USES_SHARED_OBJECT);
+
+                // If the element doesn't have a DisplayObject or it doesn't own
+                // the DisplayObject it currently has, then create a new one
+                var displayObject:DisplayObject = bitmapImage.displayObject;
+                if (!ownsDisplayObject || !displayObject)
+                    displayObject = bitmapImage.createDisplayObject();
+
+                // Add the display object as a child
+                // Check displayObject for null, some graphic elements
+                // may choose not to create a DisplayObject during this pass.
+                if (displayObject)
+                    addChild(displayObject);
+
+                bitmapImage.displayObjectSharingMode = DisplayObjectSharingMode.OWNS_UNSHARED_OBJECT;
+            }
+        }
     }

     /**
@@ -1594,6 +1679,22 @@

         // if not a string or URL request (or null), load it up immediately
         var isExternalSource:Boolean = (source is String || source is URLRequest);
+        if (!isExternalSource)
+        {
+            // get the icon source to find out if it is external or not
+            if (source is MultiDPIBitmapSource)
+            {
+                var app:Object = FlexGlobals.topLevelApplication;
+                var dpi:int;
+                if ("runtimeDPI" in app)
+                    dpi = app["runtimeDPI"];
+                else
+                    dpi = DensityUtil.classifyDPI(Capabilities.screenDPI);
+
+                var multiSource:Object = MultiDPIBitmapSource(source).getSource(dpi);
+                isExternalSource = (multiSource is String || multiSource is URLRequest);
+            }
+        }

         // if null or embedded asset do it synchronously
         if (!isExternalSource)
@@ -1659,6 +1760,13 @@
             iconNeedsValidateSize = false;
             if (iconDisplay)
                 iconDisplay.validateSize();
+        }
+
+        if (decoratorNeedsValidateSize)
+        {
+            decoratorNeedsValidateSize = false;
+            if (decoratorDisplay)
+                decoratorDisplay.validateSize();
         }

         super.validateSize(recursive);
@@ -2005,6 +2113,22 @@
         {
             ISharedDisplayObject(iconDisplay.displayObject).redrawRequested = false;
             iconDisplay.validateDisplayList();
+            // if decoratorDisplay is also using this displayObject than validate
+            // decoratorDisplay as well
+            if (decoratorDisplay &&
+                decoratorDisplay.displayObject is ISharedDisplayObject &&
+                decoratorDisplay.displayObject == iconDisplay.displayObject)
+                decoratorDisplay.validateDisplayList();
+        }
+
+        // check just for decoratorDisplay in case it has a different displayObject
+        // than iconDisplay
+        if (decoratorDisplay &&
+            decoratorDisplay.displayObject is ISharedDisplayObject &&
+            ISharedDisplayObject(decoratorDisplay.displayObject).redrawRequested)
+        {
+            ISharedDisplayObject(decoratorDisplay.displayObject).redrawRequested = false;
+            decoratorDisplay.validateDisplayList();
         }
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 5098
Author:   gauravj@adobe.com
Date:     2009-02-27T02:21:27.489350Z

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:
--------------
151 paths were modified

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

--- frameworks/projects/spark/src/spark/effects/supportClasses/AnimateInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/AnimateInstance.as
@@ -43,6 +43,11 @@
  * The FxAnimateInstance class implements the instance class for the
  * FxAnimate effect. Flex creates an instance of this class when
  * it plays a FxAnimate effect; you do not create one yourself.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
  */
 public class FxAnimateInstance extends EffectInstance
 {
@@ -64,6 +69,11 @@
      *  simply checking whether the property is 'in' the target.
      *  If not, we check whether it is a valid style, and otherwise
      *  throw an error.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     private var isStyleMap:Object = new Object();

@@ -96,6 +106,11 @@
      * An array of AnimationProperty objects, each of which holds the
      * name of the property being animated and the values that the property
      * will take on during the animation.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get animationProperties():Array
     {
@@ -116,6 +131,11 @@
      * the targets. This can be useful in situations where values resolve to
      * pixel coordinates and snapping to pixels is desired over landing
      * on fractional pixels.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected var roundValues:Boolean;

@@ -126,6 +146,11 @@
      * all standard constraints (left, right, top, bottom, horizontalCenter,
      * verticalCenter) for the duration of the animation, and re-enable them
      * when the animation is complete.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected var affectsConstraints:Boolean;

@@ -141,6 +166,11 @@
      * property in their affectedProperties array so
      * that the effect instance has enough information about the target
      * and container to do the job.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected var autoRemoveTarget:Boolean = false;

@@ -208,6 +238,11 @@

     /**
      *  @copy mx.effects.IEffectInstance#playheadTime
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     override public function get playheadTime():Number
     {
@@ -267,6 +302,11 @@
      *
      *  @param playheadTime The position, in milliseconds, between 0
      *  and the value of the duration property.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     override public function seek(playheadTime:Number):void
     {
@@ -289,6 +329,11 @@
      *
The effect dispatches the effectEnd event.

      *
      *  @see mx.effects.EffectInstance#end()
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     override public function end():void
     {
@@ -310,6 +355,11 @@

     /**
      *  @copy mx.effects.IEffectInstance#startEffect()
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     override public function startEffect():void
     {
@@ -428,6 +478,11 @@
      * Set the values in the given array on the properties held in our
      * animationProperties array. This is called by the update and end
      * functions, which are called by the Animation during the animation.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected function applyValues(value:Object):void
     {
@@ -468,6 +523,11 @@
      * is calculated from the other value and a supplied delta value.
      *
      * @return Boolean whether this call changed any values in the list
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     private function finalizeValues():Boolean
     {
@@ -515,6 +575,11 @@
     /**
      * Handles start events from the animation.
      * If you override this method, ensure that you call the super method.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected function startHandler(event:AnimationEvent):void
     {
@@ -567,6 +632,11 @@
     /**
      * Handles update events from the animation.
      * If you override this method, ensure that you call the super method.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected function updateHandler(event:AnimationEvent):void
     {
@@ -577,6 +647,11 @@
     /**
      * Handles repeat events from the animation.
      * If you override this method, ensure that you call the super method.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected function repeatHandler(event:AnimationEvent):void
     {
@@ -590,6 +665,11 @@

     /**
      *  @copy mx.effects.IEffectInstance#finishEffect()
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     override public function finishEffect():void
     {
@@ -602,6 +682,11 @@
      * Handles the end event from the animation. The value here is an Array of
      * values, one for each 'property' in our animationProperties.
      * If you override this method, ensure that you call the super method.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected function endHandler(event:AnimationEvent):void
     {
@@ -620,6 +705,11 @@
      * Note that if a RemoveAction effect is playing in a CompositeEffect,
      * then the adding/removing is already happening and this function
      * will noop the add.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     private function addDisappearingTarget():void
     {
@@ -652,6 +742,11 @@
      * Note that if a RemoveAction effect is playing in a CompositeEffect,
      * then the adding/removing is already happening and this function
      * will noop the removal.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     private function removeDisappearingTarget():void
     {
@@ -812,6 +907,11 @@
      * Utility function to handle situation where values may be queried or
      * set on the target prior to completely setting up the effect's
      * animationProperties data values (from which the styleMap is created)
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected function setupStyleMapEntry(property:String):void
     {
@@ -878,6 +978,11 @@
      * Enables or disables autoLayout in the target's container.
      * This is used to disable layout during the course of an animation,
      * and to re-enable it when the animation finishes.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     private function setupParentLayout(enable:Boolean):void
     {


Bugfix in Image control: for instances that aren't yet part of a document, no document-based path resolution will be attempted

--- src/reprise/controls/html/Image.as
+++ src/reprise/controls/html/Image.as
@@ -47,7 +47,10 @@
 			{
 				return;
 			}
-			src = document.resolveURL(src);
+			if (document)
+			{
+				src = document.resolveURL(src);
+			}
 			m_loaded = false;
 			if (m_imageLoader)
 			{


SSSPlayer is touchable

SSSPlayer is touchable

--- src/sssplayer/display/SSSPlayer.as
+++ src/sssplayer/display/SSSPlayer.as
@@ -86,7 +86,6 @@
 		public function SSSPlayer(project:SSSProject) {
 			super();
 			this.project = project;
-			this.touchable = false;
 		}

 		public function setAnime(name:String):SSSPlayer {
@@ -148,8 +147,11 @@
 			}
 		}

-		public function partPlayerAt(x:Number, y:Number):SSSPartPlayer {
-			var hitObject:DisplayObject = this.hitTest(new Point(x, y), false);
+		public function partPlayerAt(x:Number, y:Number, forTouch:Boolean = false):SSSPartPlayer {
+			var touchable:Boolean = this.touchable;
+			this.touchable = true;
+			var hitObject:DisplayObject = this.hitTest(new Point(x, y), forTouch);
+			this.touchable = touchable;
 			if (!hitObject) {
 				return null;
 			}
@@ -161,8 +163,8 @@
 			return null;
 		}

-		public function partNameAt(x:Number, y:Number):String {
-			var partPlayer:SSSPartPlayer = this.partPlayerAt(x, y);
+		public function partNameAt(x:Number, y:Number, forTouch:Boolean = false):String {
+			var partPlayer:SSSPartPlayer = this.partPlayerAt(x, y, forTouch);
 			return partPlayer ? partPlayer.name : null;
 		}


Transferred from the Adobe Open Source Subversion Repository

Revision: 10818
Author:   aharui@adobe.com
Date:     2009-10-02T16:25:32.932793Z

Log Message:
-----------
Fix getVisibleApplicationRect in child apps linked with MarshallingSupport.as

QE Notes: Need more tests on getVisibleApplicationRect to be sure it is returning the correct values
Doc Notes: None
Bugs: SDK-22701, SDK-22451
Reviewer: Darrell
API Change: No
Is noteworthy for integration: No
tests: checkintests mustella/MarshallPlan

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/MarshallingSupport.as

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

--- frameworks/projects/framework/src/mx/managers/systemClasses/MarshallingSupport.as
+++ frameworks/projects/framework/src/mx/managers/systemClasses/MarshallingSupport.as
@@ -2247,13 +2247,18 @@
             var request:InterManagerRequest = new InterManagerRequest(InterManagerRequest.SYSTEM_MANAGER_REQUEST,
                                     false, false,
                                     "getVisibleApplicationRect");
-            sbRoot.dispatchEvent(request);
-            event.value = Rectangle(request.value);
+            if (!sbRoot.dispatchEvent(request))
+            {
+                event.value = Rectangle(request.value);
+                event.preventDefault();
+            }
         }
         else
+        {
             event.value = getVisibleApplicationRect(event.value as Rectangle);
-
-        event.preventDefault();
+            event.preventDefault();
+        }
+
     }

    /**