This is an automated email from the ASF dual-hosted git repository.
gregdove pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
The following commit(s) were added to refs/heads/develop by this push:
new 59e01c64e8 Fix for "click" not being converted to Royale MouseEvent,
plus tweaks to hasPlatformModifier to include native PointerEvent
59e01c64e8 is described below
commit 59e01c64e81e55cfc71f807d80e703735ddc359f
Author: greg-dove <[email protected]>
AuthorDate: Thu Jan 18 12:17:11 2024 +1300
Fix for "click" not being converted to Royale MouseEvent, plus tweaks to
hasPlatformModifier to include native PointerEvent
---
.../org/apache/royale/core/ElementWrapper.as | 3 +-
.../royale/org/apache/royale/events/MouseEvent.as | 33 +++++++++++-----------
.../royale/events/utils/MouseEventConverter.as | 17 ++++++++++-
.../royale/utils/event/hasPlatformModifier.as | 4 +--
4 files changed, 36 insertions(+), 21 deletions(-)
diff --git
a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ElementWrapper.as
b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ElementWrapper.as
index f5517a1ae9..34269d7e28 100644
---
a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ElementWrapper.as
+++
b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ElementWrapper.as
@@ -195,8 +195,7 @@ package org.apache.royale.core
var converter:Function =
converterMap[nativeEvent.constructor.name];
if (converter)
e = converter(nativeEvent,eventObject);
- else
- {
+ if (!e) {
e = EventUtils.retrieveEvent(nativeEvent) as IBrowserEvent;
if (e == nativeEvent) {
e = new org.apache.royale.events.BrowserEvent();
diff --git
a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/MouseEvent.as
b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/MouseEvent.as
index d1724be359..630ca8d0bc 100644
---
a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/MouseEvent.as
+++
b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/MouseEvent.as
@@ -71,7 +71,7 @@ package org.apache.royale.events
public static const DOUBLE_CLICK:String = "doubleClick";
public static const WHEEL:String = "mouseWheel";
public static const CONTEXT_MENU:String = "contextMenu"
- public static const MOUSE_WHEEL:String = "mouseWheel";
+ public static const MOUSE_WHEEL:String = "mouseWheel";
/**
* Constructor.
@@ -182,7 +182,7 @@ package org.apache.royale.events
*/
public function set deltaX(value:int):void
{
-
+
}
/**
@@ -285,7 +285,7 @@ package org.apache.royale.events
public static const DOUBLE_CLICK:String = "dblclick";
public static const WHEEL:String = "wheel";
public static const CONTEXT_MENU:String = "contextMenu"
- public static const MOUSE_WHEEL:String = "mouseWheel";
+ public static const MOUSE_WHEEL:String = "mouseWheel";
/**
* Constructor.
@@ -343,56 +343,56 @@ package org.apache.royale.events
public var relatedObject:Object;
private var _ctrlKey:Boolean;
-
+
public function get ctrlKey():Boolean
{
- return wrappedEvent ? wrappedEvent.ctrlKey : _ctrlKey;
+ return wrappedEvent ? wrappedEvent.ctrlKey : _ctrlKey;
}
-
+
public function set ctrlKey(value:Boolean):void
{
if(wrappedEvent)
wrappedEvent.ctrlKey = value;
- else
+ else
_ctrlKey = value;
}
private var _altKey:Boolean;
-
+
public function get altKey():Boolean
{
- return wrappedEvent ? wrappedEvent.altKey : _altKey;
+ return wrappedEvent ? wrappedEvent.altKey : _altKey;
}
-
+
public function set altKey(value:Boolean):void
{
if(wrappedEvent)wrappedEvent.altKey = value;
else _altKey = value;
}
private var _shiftKey:Boolean;
-
+
public function get shiftKey():Boolean
{
- return wrappedEvent ? wrappedEvent.shiftKey : _shiftKey;
+ return wrappedEvent ? wrappedEvent.shiftKey : _shiftKey;
}
-
+
public function set shiftKey(value:Boolean):void
{
if(wrappedEvent)wrappedEvent.shiftKey = value;
else _shiftKey = value;
}
private var _metaKey:Boolean;
-
+
public function get metaKey():Boolean
{
return wrappedEvent ? wrappedEvent.metaKey : _metaKey;
}
-
+
public function set metaKey(value:Boolean):void
{
if(wrappedEvent)wrappedEvent.metaKey = value;
else _metaKey = value;
}
-
+
private var _buttons:int = -1;
public function get buttonDown():Boolean
{
@@ -834,6 +834,7 @@ package org.apache.royale.events
public static function setupConverter():Boolean
{
ElementWrapper.converterMap["MouseEvent"] =
MouseEventConverter.convert;
+ ElementWrapper.converterMap["PointerEvent"] =
MouseEventConverter.pointerEventFilter;
_useNativeConstructor = typeof window.MouseEvent == 'function';
return true;
}
diff --git
a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/utils/MouseEventConverter.as
b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/utils/MouseEventConverter.as
index fd61676cb9..9209b672d6 100644
---
a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/utils/MouseEventConverter.as
+++
b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/utils/MouseEventConverter.as
@@ -22,6 +22,7 @@ package org.apache.royale.events.utils
import flash.events.Event;
import flash.events.IEventDispatcher;
import flash.events.MouseEvent;
+ import org.apache.royale.events.utils.IHandlesOriginalEvent;
}
COMPILE::JS
{
@@ -30,7 +31,6 @@ package org.apache.royale.events.utils
}
import org.apache.royale.events.MouseEvent;
- import org.apache.royale.events.utils.IHandlesOriginalEvent;
/**
* Mouse events conversion.
@@ -198,6 +198,21 @@ package org.apache.royale.events.utils
event.wrapEvent(browserEvent);
return event;
}
+
+ /**
+ * filter for MouseEvents represented by PointerEvents ('click' is
known to be on in recent browser/OS combos)
+ * @param nativeEvent the native browser event
+ * @param browserEvent the google BrowserEvent representation
+ * @return null if not converted, otherwise a Royale MouseEvent
+ *
+ * @royaleignorecoercion org.apache.royale.events.IBrowserEvent
+ */
+ public static function
pointerEventFilter(nativeEvent:Object,browserEvent:goog.events.BrowserEvent=null):Object
+ {
+ //convert native PointerEvents of type 'click' to Royale
MouseEvents, otherwise return null:
+ return (nativeEvent.type == 'click') ? convert(nativeEvent,
browserEvent) : null;
+ }
+
}
}
diff --git
a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/event/hasPlatformModifier.as
b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/event/hasPlatformModifier.as
index adfce10317..11205518c7 100644
---
a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/event/hasPlatformModifier.as
+++
b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/event/hasPlatformModifier.as
@@ -33,7 +33,7 @@ package org.apache.royale.utils.event
return isMac ? (event as MouseEvent).metaKey : (event as
MouseEvent).ctrlKey;
} else if(event is KeyboardEvent){
return isMac ? (event as KeyboardEvent).metaKey : (event as
KeyboardEvent).ctrlKey;
- } else if(event.constructor.name == "MouseEvent" || event.constructor.name
== "KeyboardEvent"){
+ } else if(event.constructor.name == "MouseEvent" || event.constructor.name
== "KeyboardEvent" || event.constructor.name == "PointerEvent"){
return isMac ? event.metaKey : event.ctrlKey;
}
return false;
@@ -47,4 +47,4 @@ package org.apache.royale.utils.event
return false;
}
}
-}
\ No newline at end of file
+}