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

Reply via email to