Repository: flex-asjs
Updated Branches:
  refs/heads/develop 099e208fa -> a010c7836


Works around FLEX-35185


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/f074ed4d
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/f074ed4d
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/f074ed4d

Branch: refs/heads/develop
Commit: f074ed4d5968b23f95258dba4ad288d19b9276ea
Parents: 11e0f75
Author: yishayw <[email protected]>
Authored: Sun Nov 27 17:06:36 2016 +0200
Committer: yishayw <[email protected]>
Committed: Sun Nov 27 17:06:36 2016 +0200

----------------------------------------------------------------------
 .../flex/org/apache/flex/events/MouseEvent.as   | 27 +++++++++++++++-----
 .../flex/events/utils/MouseEventConverter.as    |  3 ++-
 2 files changed, 22 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f074ed4d/frameworks/projects/Core/src/main/flex/org/apache/flex/events/MouseEvent.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/MouseEvent.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/MouseEvent.as
index a6f4e3c..c135eb0 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/MouseEvent.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/MouseEvent.as
@@ -20,9 +20,9 @@ package org.apache.flex.events
 {
     COMPILE::SWF
     {
+        import flash.display.InteractiveObject;
         import flash.events.Event;
         import flash.events.MouseEvent;
-               import flash.display.InteractiveObject;
     }
     COMPILE::JS
     {
@@ -79,7 +79,7 @@ package org.apache.flex.events
                                    ctrlKey:Boolean = false, altKey:Boolean = 
false, shiftKey:Boolean = false,
                                    buttonDown:Boolean = false, delta:int = 0,
                                    commandKey:Boolean = false, 
controlKey:Boolean = false,
-                                   clickCount:int = 0)
+                                   clickCount:int = 0, 
targetBeforeBubbling:IEventDispatcher = null)
                {
                        super(type, bubbles, cancelable);
 
@@ -91,6 +91,7 @@ package org.apache.flex.events
             this.shiftKey = shiftKey;
             this.buttonDown = buttonDown;
             this.delta = delta;
+                       this.targetBeforeBubbling = targetBeforeBubbling;
                }
 
         // these map directly to JS MouseEvent fields.
@@ -112,6 +113,8 @@ package org.apache.flex.events
         }
 
         private var _stagePoint:Point;
+               // TODO remove this when figure out how to preserve the real 
target
+        public var targetBeforeBubbling:Object;
 
         public function get screenX():Number
         {
@@ -119,7 +122,8 @@ package org.apache.flex.events
             if (!_stagePoint)
             {
                 var localPoint:Point = new Point(localX, localY);
-                _stagePoint = PointUtils.localToGlobal(localPoint, target);
+                               var referenceObject:Object = 
targetBeforeBubbling ? targetBeforeBubbling : target;
+                _stagePoint = PointUtils.localToGlobal(localPoint, 
referenceObject);
             }
             return _stagePoint.x;
         }
@@ -130,7 +134,8 @@ package org.apache.flex.events
             if (!_stagePoint)
             {
                 var localPoint:Point = new Point(localX, localY);
-                _stagePoint = PointUtils.localToGlobal(localPoint, target);
+                               var referenceObject:Object = 
targetBeforeBubbling ? targetBeforeBubbling : target;
+                _stagePoint = PointUtils.localToGlobal(localPoint, 
referenceObject);
             }
             return _stagePoint.y;
         }
@@ -153,10 +158,12 @@ package org.apache.flex.events
          */
         public function cloneEvent():IFlexJSEvent
         {
-            return new org.apache.flex.events.MouseEvent(type, bubbles, 
cancelable,
+            var e:org.apache.flex.events.MouseEvent = new 
org.apache.flex.events.MouseEvent(type, bubbles, cancelable,
                 localX, localY, relatedObject, ctrlKey, altKey, shiftKey,
                 buttonDown, delta
                 /* got errors for commandKey, commandKey, controlKey, 
clickCount*/);
+                       e.targetBeforeBubbling = targetBeforeBubbling;
+                       return e;
         }
 
         /**
@@ -215,7 +222,7 @@ package org.apache.flex.events
                                                                   
ctrlKey:Boolean = false, altKey:Boolean = false, shiftKey:Boolean = false,
                                                                   
buttonDown:Boolean = false, delta:int = 0,
                                                                   
commandKey:Boolean = false, controlKey:Boolean = false,
-                                                                  
clickCount:int = 0)
+                                                                  
clickCount:int = 0, targetBeforeBubbling:IEventDispatcher = null)
                {
                        super(type, bubbles, cancelable);
 
@@ -264,6 +271,12 @@ package org.apache.flex.events
                public var controlKey:Boolean;
                public var clickCount:int;
 
+               // TODO remove this when figure out how to preserve the real 
target
+               // The problem only manifests in SWF, so this alias is good 
enough for now
+               public function get targetBeforeBubbling():Object
+               {
+                       return target;
+               }
                // these map directly to JS MouseEvent fields.
                public function get clientX():Number
                {
@@ -283,7 +296,7 @@ package org.apache.flex.events
                }
 
                private var _stagePoint:Point;
-
+       
                public function get screenX():Number
                {
                        if (!target) return localX;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f074ed4d/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseEventConverter.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseEventConverter.as
 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseEventConverter.as
index d0f1e51..039d183 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseEventConverter.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseEventConverter.as
@@ -23,7 +23,7 @@ package org.apache.flex.events.utils
     import flash.events.MouseEvent;
     
     import org.apache.flex.events.MouseEvent;
-       import org.apache.flex.events.utils.IHandlesOriginalEvent;
+    import org.apache.flex.events.utils.IHandlesOriginalEvent;
     
        /**
         *  Mouse events conversion.
@@ -89,6 +89,7 @@ package org.apache.flex.events.utils
                 {
                     // some events are not converted if there are no JS 
equivalents
                     event.stopImmediatePropagation();
+                                       newEvent.targetBeforeBubbling = 
event.target;
                     event.target.dispatchEvent(newEvent);
                 }
                 else

Reply via email to