A bit messy and thereâs no way to currently set coordinates on MouseEvents in HTML (is that needed?), but this fixes mouse event coordinates from going bonkers.
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/5224af3f Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/5224af3f Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/5224af3f Branch: refs/heads/develop Commit: 5224af3ffb85c475ec9d2f5e586efc51175061f5 Parents: 76dd35c Author: Harbs <ha...@in-tools.com> Authored: Sun Jul 23 14:30:41 2017 +0300 Committer: Harbs <ha...@in-tools.com> Committed: Sun Jul 23 14:30:41 2017 +0300 ---------------------------------------------------------------------- .../projects/Core/src/main/flex/CoreClasses.as | 1 + .../flex/org/apache/flex/events/BrowserEvent.as | 11 +- .../org/apache/flex/events/KeyboardEvent.as | 5 +- .../flex/org/apache/flex/events/MouseEvent.as | 105 ++++++++++--------- .../flex/events/utils/MouseEventConverter.as | 4 +- 5 files changed, 59 insertions(+), 67 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5224af3f/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 fd6c8a2..25a2c13 100644 --- a/frameworks/projects/Core/src/main/flex/CoreClasses.as +++ b/frameworks/projects/Core/src/main/flex/CoreClasses.as @@ -179,6 +179,7 @@ internal class CoreClasses import org.apache.flex.utils.JXON; JXON; import org.apache.flex.utils.MD5; MD5; import org.apache.flex.utils.OSUtils; OSUtils; + import org.apache.flex.utils.PointUtils; PointUtils; import org.apache.flex.utils.StringPadder; StringPadder; import org.apache.flex.utils.StringTrimmer; StringTrimmer; import org.apache.flex.utils.StringUtil; StringUtil; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5224af3f/frameworks/projects/Core/src/main/flex/org/apache/flex/events/BrowserEvent.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/BrowserEvent.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/BrowserEvent.as index b0ec5b8..9bcad2e 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/BrowserEvent.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/BrowserEvent.as @@ -353,16 +353,7 @@ package org.apache.flex.events */ public function get relatedTarget():Object { - var o:Object = wrappedEvent.relatedTarget; - - if (o) - { - if (o.flexjs_wrapper) - return o.flexjs_wrapper; - if (o.parentNode && o.parentNode.flexjs_wrapper) - return o.parentNode.flexjs_wrapper; - } - return o; + return getTargetWrapper(wrappedEvent.relatedTarget); } /** http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5224af3f/frameworks/projects/Core/src/main/flex/org/apache/flex/events/KeyboardEvent.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/KeyboardEvent.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/KeyboardEvent.as index f60110f..cf9109a 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/KeyboardEvent.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/KeyboardEvent.as @@ -21,6 +21,7 @@ package org.apache.flex.events COMPILE::JS { import goog.events.BrowserEvent; + import org.apache.flex.events.Event; } import org.apache.flex.events.IBrowserEvent; @@ -78,7 +79,7 @@ package org.apache.flex.events COMPILE::JS public function get target():Object { - return wrappedEvent ? getTargetWrapper(wrappedEvent.target) : super.target; + return wrappedEvent ? getTargetWrapper(wrappedEvent.target) : null; } /** @@ -92,7 +93,7 @@ package org.apache.flex.events COMPILE::JS public function get currentTarget():Object { - return wrappedEvent ? getTargetWrapper(wrappedEvent.currentTarget) : super.currentTarget; + return wrappedEvent ? getTargetWrapper(wrappedEvent.currentTarget) : null; } private var _key:String; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5224af3f/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 1296065..37ec839 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,8 +27,9 @@ package org.apache.flex.events COMPILE::JS { import window.MouseEvent; - import org.apache.flex.events.utils.EventUtils; import goog.events.BrowserEvent; + import org.apache.flex.events.Event; + import org.apache.flex.events.utils.EventUtils; } import org.apache.flex.core.IFlexJSElement; @@ -243,8 +244,8 @@ package org.apache.flex.events { super(type, bubbles, cancelable); - this.localX = localX; - this.localY = localY; + // this.localX = localX; + // this.localY = localY; this.relatedObject = relatedObject; this.ctrlKey = ctrlKey; this.altKey = altKey; @@ -259,37 +260,13 @@ package org.apache.flex.events /** * @type {?goog.events.BrowserEvent} */ - COMPILE::JS private var wrappedEvent:Object; - COMPILE::JS public function wrapEvent(event:goog.events.BrowserEvent):void { wrappedEvent = event; } - private var _localX:Number; - public function get localX():Number - { - return _localX; - } - public function set localX(value:Number):void - { - _localX = value; - _stagePoint = null; - } - - private var _localY:Number; - public function get localY():Number - { - return _localY; - } - public function set localY(value:Number):void - { - _localY = value; - _stagePoint = null; - } - public var relatedObject:Object; public var ctrlKey:Boolean; public var altKey:Boolean; @@ -337,7 +314,7 @@ package org.apache.flex.events */ public function get target():Object { - return wrappedEvent ? getTargetWrapper(wrappedEvent.target) : super.target; + return wrappedEvent ? getTargetWrapper(wrappedEvent.target) : null; } /** @@ -350,7 +327,7 @@ package org.apache.flex.events */ public function get currentTarget():Object { - return wrappedEvent ? getTargetWrapper(wrappedEvent.currentTarget) : super.currentTarget; + return wrappedEvent ? getTargetWrapper(wrappedEvent.currentTarget) : null; } // TODO remove this when figure out how to preserve the real target @@ -359,46 +336,70 @@ package org.apache.flex.events { return target; } - // these map directly to JS MouseEvent fields. + /** + * X-coordinate relative to the window. + * @type {number} + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ public function get clientX():Number { - return screenX; + return wrappedEvent.clientX; } - public function set clientX(value:Number):void + + public function get localX():Number { - localX = value; + return clientX; } + + /** + * Y-coordinate relative to the window. + * @type {number} + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ public function get clientY():Number { - return screenY; + return wrappedEvent.clientY; } - public function set clientY(value:Number):void + + public function get localY():Number { - localY = value; + return clientY; } - private var _stagePoint:Point; - + /** + * X-coordinate relative to the monitor. + * @type {number} + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ public function get screenX():Number { - if (!target) return localX; - if (!_stagePoint) - { - var localPoint:Point = new Point(localX, localY); - _stagePoint = PointUtils.localToGlobal(localPoint, target); - } - return _stagePoint.x; + return wrappedEvent.screenX; } + /** + * Y-coordinate relative to the monitor. + * @type {number} + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ public function get screenY():Number { - if (!target) return localY; - if (!_stagePoint) - { - var localPoint:Point = new Point(localX, localY); - _stagePoint = PointUtils.localToGlobal(localPoint, target); - } - return _stagePoint.y; + return wrappedEvent.screenY; } /** http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5224af3f/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 b98177d..5cd5c90 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 @@ -179,9 +179,7 @@ package org.apache.flex.events.utils { public static function convert(nativeEvent:Object):MouseEvent { - return new MouseEvent(nativeEvent["type"], true, false, - nativeEvent["clientX"], nativeEvent["clientY"], null, - nativeEvent["ctrlKey"], nativeEvent["altKey"], nativeEvent["shiftKey"]); + return new MouseEvent(nativeEvent["type"], nativeEvent["bubbles"], nativeEvent["cancelable"]); } }