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; + } } }
