Repository: flex-asjs
Updated Branches:
  refs/heads/develop 5f9e150f8 -> 145ec9923


FLEX-35247 - Second step of fixing IE11 events - Add to EventUtils 
createMouseEvent to handle creation of event in IE11
- Use method createMouseEvent in org.apache.flex.events.MouseEvent


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

Branch: refs/heads/develop
Commit: 145ec9923b189d26e2a010d1d20ef26e382e6a93
Parents: 5f9e150
Author: piotrz <[email protected]>
Authored: Tue Jan 17 22:12:33 2017 +0100
Committer: piotrz <[email protected]>
Committed: Tue Jan 17 22:12:33 2017 +0100

----------------------------------------------------------------------
 .../org/apache/flex/core/HTMLElementWrapper.as  | 14 ++++----
 .../projects/Core/src/main/flex/CoreClasses.as  |  2 +-
 .../flex/org/apache/flex/core/ElementWrapper.as | 14 ++++----
 .../flex/org/apache/flex/events/MouseEvent.as   | 14 ++++----
 .../org/apache/flex/events/utils/EventUtils.as  | 38 ++++++++++++++++++--
 5 files changed, 57 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/145ec992/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/HTMLElementWrapper.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/HTMLElementWrapper.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/HTMLElementWrapper.as
index afb1f56..6ba908d 100644
--- 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/HTMLElementWrapper.as
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/HTMLElementWrapper.as
@@ -243,24 +243,24 @@ package org.apache.flex.core
 
         override public function dispatchEvent(e:Object):Boolean
         {
-            var t:String;
+            var eventType:String = "";
             if (typeof(e) === 'string')
             {
-                t = e as String;
+                eventType = e as String;
                 if (e === org.apache.flex.events.Event.CHANGE)
                 {
-                    e = EventUtils.createEvent(t);
+                    e = EventUtils.createEvent(eventType);
                 }
             }
             else
             {
-                t = e.type;
-                if (ElementEvents.elementEvents[t])
+                eventType = e.type;
+                if (ElementEvents.elementEvents[eventType])
                 {
-                    e = EventUtils.createEvent(t);
+                    e = EventUtils.createEvent(eventType);
                 }
             }
-            var source:Object = this.getActualDispatcher_(t);
+            var source:Object = this.getActualDispatcher_(eventType);
             if (source == this)
             {
                 return super.dispatchEvent(e);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/145ec992/frameworks/projects/Core/src/main/flex/CoreClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/CoreClasses.as 
b/frameworks/projects/Core/src/main/flex/CoreClasses.as
index acb6960..c290cdb 100644
--- a/frameworks/projects/Core/src/main/flex/CoreClasses.as
+++ b/frameworks/projects/Core/src/main/flex/CoreClasses.as
@@ -121,7 +121,6 @@ internal class CoreClasses
        import org.apache.flex.events.DetailEvent; DetailEvent;
        import org.apache.flex.events.ValueEvent; ValueEvent;
     import org.apache.flex.events.utils.MouseUtils; MouseUtils;
-       import org.apache.flex.events.utils.EventUtils; EventUtils;
        import org.apache.flex.geom.Matrix; Matrix;
     import org.apache.flex.geom.Point; Point;
     import org.apache.flex.geom.Rectangle; Rectangle;
@@ -159,6 +158,7 @@ internal class CoreClasses
        COMPILE::JS
        {
                import org.apache.flex.utils.URLUtils; URLUtils;
+        import org.apache.flex.events.utils.EventUtils; EventUtils;
        }
 
        import org.apache.flex.core.ClassFactory; ClassFactory;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/145ec992/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ElementWrapper.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ElementWrapper.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ElementWrapper.as
index 1667f01..b744edb 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ElementWrapper.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ElementWrapper.as
@@ -330,24 +330,24 @@ package org.apache.flex.core
 
         override public function dispatchEvent(e:Object):Boolean
         {
-            var t:String;
+            var eventType:String = "";
             if (typeof(e) === 'string')
             {
-                t = e as String;
+                eventType = e as String;
                 if (e === Event.CHANGE)
                 {
-                    e = EventUtils.createEvent(t);
+                    e = EventUtils.createEvent(eventType);
                 }
             }
             else
             {
-                t = e.type;
-                if (ElementEvents.elementEvents[t])
+                eventType = e.type;
+                if (ElementEvents.elementEvents[eventType])
                 {
-                    e = EventUtils.createEvent(t);
+                    e = EventUtils.createEvent(eventType);
                 }
             }
-            var source:Object = this.getActualDispatcher_(t);
+            var source:Object = this.getActualDispatcher_(eventType);
             if (source == this)
             {
                 return super.dispatchEvent(e);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/145ec992/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 c135eb0..62462f1 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
@@ -27,10 +27,10 @@ package org.apache.flex.events
     COMPILE::JS
     {
         import window.MouseEvent;
+               import org.apache.flex.events.utils.EventUtils;
     }
     
     import org.apache.flex.core.IFlexJSElement;
-    import org.apache.flex.core.IUIBase;
     import org.apache.flex.geom.Point;
     import org.apache.flex.utils.PointUtils;
 
@@ -353,7 +353,8 @@ package org.apache.flex.events
                                // get all children
                                outs = targets.slice(index + 1);
                                m = outs.length;
-                               for (j = 0; j < m; j++) {
+                               for (j = 0; j < m; j++)
+                               {
                                        me = makeMouseEvent(
                                                ROLL_OUT, e);
                                        outs[j].element.dispatchEvent(me);
@@ -414,11 +415,10 @@ package org.apache.flex.events
                 */
                private static function makeMouseEvent(type:String, 
e:window.MouseEvent):window.MouseEvent
                {
-                       var out:window.MouseEvent = new window.MouseEvent(type);
-                       out.initMouseEvent(type, false, false,
-                               e.view, e.detail, e.screenX, e.screenY,
-                               e.clientX, e.clientY, e.ctrlKey, e.altKey,
-                               e.shiftKey, e.metaKey, e.button, 
e.relatedTarget);
+                       var out:window.MouseEvent = 
EventUtils.createMouseEvent(type, false, false, {
+                    view: e.view, detail: e.detail, screenX: e.screenX, 
screenY: e.screenY,
+                                       clientX: e.clientX, clientY: e.clientY, 
ctrlKey: e.ctrlKey, altKey: e.altKey,
+                                   shiftKey: e.shiftKey, metaKey: e.metaKey, 
button: e.button, relatedTarget: e.relatedTarget});
                        return out;
                };
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/145ec992/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/EventUtils.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/EventUtils.as
 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/EventUtils.as
index 4a9d36d..aebaa2b 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/EventUtils.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/EventUtils.as
@@ -18,8 +18,6 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.events.utils
 {
-    import org.apache.flex.events.Event;
-
     /**
         *  Provides static methods for creating custom events in JS
      *  
@@ -28,9 +26,9 @@ package org.apache.flex.events.utils
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
         */
+    COMPILE::JS
        public class EventUtils
        {
-       COMPILE::JS
        public static function createEvent(type:String, bubbles:Boolean = 
false, cancelable:Boolean = false):Object
        {
            var customEvent:Object = null;
@@ -53,5 +51,39 @@ package org.apache.flex.events.utils
 
            return customEvent;
        }
+
+       public static function createMouseEvent(type:String, bubbles:Boolean = 
false, cancelable = false,
+                                               params:Object = null):Object
+       {
+           var mouseEvent:Object = null;
+
+           if (!params)
+           {
+               params = {};
+           }
+
+           try
+           {
+               params.bubbles = bubbles;
+               params.cancelable = cancelable;
+
+               mouseEvent = new window.MouseEvent(type, params);
+               return mouseEvent;
+           }
+           catch (e:Error)
+           {
+
+           }
+
+           if (!mouseEvent)
+           {
+               mouseEvent = document.createEvent('MouseEvent');
+               mouseEvent.initMouseEvent(type, bubbles, cancelable, 
params.view,
+                       params.detail, params.screenX, params.screenY, 
params.clientX, params.clientY,
+                       params.ctrlKey, params.altKey, params.shiftKey, 
params.metaKey, params.button, params.relatedTarget);
+           }
+
+           return mouseEvent;
+       }
     }
 }

Reply via email to