You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ha...@apache.org on 2019/12/22 09:55:57 UTC

[royale-asjs] 01/02: Temporary fix for event override conflict

This is an automated email from the ASF dual-hosted git repository.

harbs pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit caa837ee69029c1ff8984b457bc7849c0cf3f5f7
Author: Harbs <ha...@in-tools.com>
AuthorDate: Sun Dec 22 11:55:20 2019 +0200

    Temporary fix for event override conflict
---
 .../org/apache/royale/core/ElementWrapper.as       | 14 +++++++++++--
 .../org/apache/royale/core/HTMLElementWrapper.as   | 24 ++++++++++++++--------
 2 files changed, 28 insertions(+), 10 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 60a352c..58b7a64 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
@@ -22,6 +22,7 @@ package org.apache.royale.core
     {
         import org.apache.royale.events.utils.EventUtils;
         import org.apache.royale.events.BrowserEvent;
+        import org.apache.royale.events.IBrowserEvent
         import goog.events.BrowserEvent;
         import org.apache.royale.events.ElementEvents;
         import goog.events;
@@ -180,11 +181,20 @@ package org.apache.royale.core
          * @param listener The listener object to call {goog.events.Listener}.
          * @param eventObject The event object to pass to the listener.
          * @return Result of listener.
+         * @royaleignorecoercion org.apache.royale.events.IBrowserEvent
          */
 		static public function fireListenerOverride(listener:Object, eventObject:goog.events.BrowserEvent):Boolean
 		{
-			var e:org.apache.royale.events.BrowserEvent = new org.apache.royale.events.BrowserEvent();
-			e.wrapEvent(eventObject);
+            /**
+             * For now we're adding in some just-in-case code to prevent conflicts with ElementWrapper. This needs to be fixed.
+             */
+            var e:IBrowserEvent;
+            if(eventObject is IBrowserEvent){
+                e = eventObject as IBrowserEvent
+            } else {
+                e = new org.apache.royale.events.BrowserEvent();
+                e.wrapEvent(eventObject);
+            }
 			return ElementWrapper.googFireListener(listener, e);
 		}
 
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as
index 419288b..d44fb29 100644
--- a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as
@@ -155,18 +155,26 @@ package org.apache.royale.core
          * @param listener The listener object to call {goog.events.Listener}.
          * @param eventObject The event object to pass to the listener.
          * @return Result of listener.
+         * @royaleignorecoercion org.apache.royale.events.IBrowserEvent
          */
 		static public function fireListenerOverride(listener:Object, eventObject:goog.events.BrowserEvent):Boolean
 		{
+            /**
+             * For now we're adding in some just-in-case code to prevent conflicts with ElementWrapper. This needs to be fixed.
+             */
             var e:IBrowserEvent;
-            var nativeEvent:Object = eventObject.getBrowserEvent();
-            var converter:Object = converterMap[nativeEvent.constructor.name];
-            if (converter)
-                e = converter["convert"](nativeEvent,eventObject);
-            else
-            {
-                e = new org.apache.royale.events.BrowserEvent();
-			    e.wrapEvent(eventObject);
+            if(eventObject is IBrowserEvent){
+                e = eventObject as IBrowserEvent
+            } else {
+                var nativeEvent:Object = eventObject.getBrowserEvent();
+                var converter:Object = converterMap[nativeEvent.constructor.name];
+                if (converter)
+                    e = converter["convert"](nativeEvent,eventObject);
+                else
+                {
+                    e = new org.apache.royale.events.BrowserEvent();
+                    e.wrapEvent(eventObject);
+                }
             }
 			return HTMLElementWrapper.googFireListener(listener, e);
 		}