Harbs,

In HTMLElementWrapper, it looked like there were 3 main code paths:

1) if(eventObject is IBrowserEvent){
2a) if (converter)
2b) else 

I'm only looking at this diff, but it feels like some of those may have gotten 
lost, so please double-check.

Also, it may be the Crux issue is related to this:

-                    e = EventUtils.createEvent(eventType);
+                    e = EventUtils.createEvent(eventType), e.bubbles;

HTH,
-Alex

On 12/22/19, 8:39 AM, "[email protected]" <[email protected]> wrote:

    This is an automated email from the ASF dual-hosted git repository.
    
    harbs pushed a commit to branch develop
    in repository 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitbox.apache.org%2Frepos%2Fasf%2Froyale-asjs.git&amp;data=02%7C01%7Caharui%40adobe.com%7Cec736cad56b3465bb2aa08d786fd7eea%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637126295667140081&amp;sdata=ELMay%2FqtfOHVtm0GoQNdXhXrxhKRerWukYuHHhqZJ4E%3D&amp;reserved=0
    
    
    The following commit(s) were added to refs/heads/develop by this push:
         new f50c999  Cleaned up ElementWrapper and HTMLElementWrapper
    f50c999 is described below
    
    commit f50c9990a3190cf681364905525656984ab2e9c5
    Author: Harbs <[email protected]>
    AuthorDate: Sun Dec 22 18:39:04 2019 +0200
    
        Cleaned up ElementWrapper and HTMLElementWrapper
    ---
     .../beads/CrossBrowserFireListenerOverrideBead.as  |   4 +-
     .../org/apache/royale/core/ElementWrapper.as       |  41 ++---
     .../org/apache/royale/core/HTMLElementWrapper.as   | 204 
+--------------------
     .../org/apache/royale/events/KeyboardEvent.as      |   4 +-
     .../royale/org/apache/royale/events/MouseEvent.as  |   4 +-
     .../src/main/royale/mx/core/Application.as         |   8 +-
     .../main/royale/spark/components/Application.as    |   4 +-
     7 files changed, 37 insertions(+), 232 deletions(-)
    
    diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CrossBrowserFireListenerOverrideBead.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CrossBrowserFireListenerOverrideBead.as
    index 36db48b..98532bd 100644
    --- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CrossBrowserFireListenerOverrideBead.as
    +++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CrossBrowserFireListenerOverrideBead.as
    @@ -20,7 +20,7 @@ package org.apache.royale.html.beads
     {
         import org.apache.royale.core.IBead;
         import org.apache.royale.core.IStrand;
    -   import org.apache.royale.core.HTMLElementWrapper;
    +   import org.apache.royale.core.ElementWrapper;
         COMPILE::JS  
        {
             import goog.events;
    @@ -87,7 +87,7 @@ package org.apache.royale.html.beads
                        }
     
                        e.wrapEvent(eventObject);
    -                   return HTMLElementWrapper.googFireListener(listener, e);
    +                   return ElementWrapper.googFireListener(listener, e);
                }
         }
     }
    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 58b7a64..ec7ab71 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
    @@ -27,6 +27,7 @@ package org.apache.royale.core
             import org.apache.royale.events.ElementEvents;
             import goog.events;
             import goog.events.EventTarget;
    +        import goog.DEBUG;
         }
         COMPILE::SWF
         {
    @@ -77,8 +78,7 @@ package org.apache.royale.core
                 if (!_beads)
                 {
                     _beads = new Vector.<IBead>();
    -            }
    -            
    +            }            
                 _beads.push(bead);
                 bead.strand = this;
             }
    @@ -115,9 +115,7 @@ package org.apache.royale.core
             public function removeBead(bead:IBead):IBead
             {
                 var i:uint, n:uint, value:Object;
    -            
                 n = _beads.length;
    -            
                 for (i = 0; i < n; i++)
                 {
                     value = _beads[i];
    @@ -125,7 +123,7 @@ package org.apache.royale.core
                     if (bead === value)
                     {
                         _beads.splice(i, 1);
    -                    
    +                    bead.strand = null;
                         return bead;
                     }
                 }
    @@ -173,6 +171,11 @@ package org.apache.royale.core
        public class ElementWrapper extends EventDispatcher implements IStrand
        {
     
    +        /**
    +         * @royalesuppresspublicvarwarning
    +         */
    +        static public var converterMap:Object = {};
    +
                //--------------------------------------
                //   Static Function
                //--------------------------------------
    @@ -185,13 +188,13 @@ package org.apache.royale.core
              */
                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;
    -            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);
                 }
    @@ -262,7 +265,7 @@ package org.apache.royale.core
                        {
                                _beads = new Vector.<IBead>();
                        }
    -
    +            if (goog.DEBUG && !(bead is IBead)) throw new 
TypeError('Cannot convert '+bead+' to IBead');
                        _beads.push(bead);
                        bead.strand = this;
                }
    @@ -274,11 +277,8 @@ package org.apache.royale.core
                public function getBeadByType(classOrInterface:Class):IBead
                {
                        var bead:IBead, i:uint, n:uint;
    -
                 if (!_beads) return null;
    -            
                        n = _beads.length;
    -
                        for (i = 0; i < n; i++)
                        {
                                bead = _beads[i];
    @@ -299,9 +299,7 @@ package org.apache.royale.core
                public function removeBead(bead:IBead):IBead
                {
                        var i:uint, n:uint, value:Object;
    -
                        n = _beads.length;
    -
                        for (i = 0; i < n; i++)
                        {
                                value = _beads[i];
    @@ -309,7 +307,6 @@ package org.apache.royale.core
                                if (bead === value)
                                {
                                        _beads.splice(i, 1);
    -
                                        return bead;
                                }
                        }
    @@ -351,12 +348,12 @@ package org.apache.royale.core
             override public function dispatchEvent(e:Object):Boolean
             {
                 var eventType:String = "";
    -            if (typeof(e) === 'string')
    +            if (typeof(e) == 'string')
                 {
                     eventType = e as String;
    -                if (e === Event.CHANGE)
    +                if (e == "change")
                     {
    -                    e = EventUtils.createEvent(eventType);
    +                    e = EventUtils.createEvent(eventType, e.bubbles);
                     }
                 }
                 else
    @@ -364,7 +361,7 @@ package org.apache.royale.core
                     eventType = e.type;
                     if (ElementEvents.elementEvents[eventType])
                     {
    -                    e = EventUtils.createEvent(eventType);
    +                    e = EventUtils.createEvent(eventType), e.bubbles;
                     }
                 }
                 var source:Object = this.getActualDispatcher_(eventType);
    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 d44fb29..59e571c 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
    @@ -144,92 +144,13 @@ package org.apache.royale.core
         }
         
        COMPILE::JS
    -   public class HTMLElementWrapper extends EventDispatcher implements 
IStrand
    +   public class HTMLElementWrapper extends ElementWrapper
        {
     
    -           //--------------------------------------
    -           //   Static Function
    -           //--------------------------------------
    -
    -        /**
    -         * @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;
    -            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);
    -           }
    -        
    -        /**
    -         * @royalesuppresspublicvarwarning
    -         */
    -        static public var converterMap:Object = {};
    -
    -        /**
    -         * Static initializer
    -         */
    -           static public function installOverride():Boolean
    -           {
    -                   HTMLElementWrapper.googFireListener = 
goog.events.fireListener;
    -                   goog.events.fireListener = 
HTMLElementWrapper.fireListenerOverride;
    -                   return true;
    -           }
    -
    -        //--------------------------------------
    -        //   Static Property
    -        //--------------------------------------
    -        
    -        /**
    -         * The original fireListener.
    -         * 
    -         *  @royalesuppresspublicvarwarning
    -         */
    -        static public var googFireListener:Function;
    -        
    -        /**
    -         * The properties that triggers the static initializer.
    -         * Note, in JS, this property has to be declared
    -         * after the installOverride.
    -         * 
    -         *  @royalesuppresspublicvarwarning
    -         */
    -        static public var installedOverride:Boolean = installOverride();
             
                //--------------------------------------
                //   Property
                //--------------------------------------
    -
    -           private var _element:WrappedHTMLElement;
    -        
    -        public function get element():WrappedHTMLElement
    -        {
    -            return _element;
    -        }
    -        
    -        public function set element(value:WrappedHTMLElement):void
    -        {
    -            _element = value;
    -            _element.royale_wrapper = this;
    -        }
             
             /**
              * allow access from overrides
    @@ -270,8 +191,6 @@ package org.apache.royale.core
                 }
             }
             
    -           private var _beads:Array;
    -        
                //--------------------------------------
                //   Function
                //--------------------------------------
    @@ -280,85 +199,15 @@ package org.apache.royale.core
              * @param bead The new bead.
              * @royaleignorecoercion org.apache.royale.core.IBeadModel 
              */
    -           public function addBead(bead:IBead):void
    +           override public function addBead(bead:IBead):void
                {
    -                   if (!_beads)
    -                   {
    -                           _beads = [];
    -                   }
    -            if (goog.DEBUG && !(bead is IBead)) throw new 
TypeError('Cannot convert '+bead+' to IBead')
    -                   _beads.push(bead);
    -
    -                   if (bead is IBeadModel)
    +                   if (bead is IBeadModel)
                        {
                                _model = bead as IBeadModel;
                        }
    -
    -                   bead.strand = this;
    -           }
    -
    -        /**
    -         * @param classOrInterface The requested bead type.
    -         * @return The bead.
    -         */
    -           public function getBeadByType(classOrInterface:Class):IBead
    -           {
    -                   var bead:IBead, i:uint, n:uint;
    -
    -            if (!_beads) return null;
    -            
    -                   n = _beads.length;
    -
    -                   for (i = 0; i < n; i++)
    -                   {
    -                           bead = _beads[i];
    -
    -                           if (bead is classOrInterface)
    -                           {
    -                                   return bead;
    -                           }
    -                   }
    -
    -                   return null;
    +           super.addBead(bead);
                }
    -
    -           /**
    -            * @param bead The bead to remove.
    -            * @return The bead.
    -            */
    -           public function removeBead(bead:IBead):IBead
    -           {
    -                   var i:uint, n:uint, value:Object;
    -
    -                   n = _beads.length;
    -
    -                   for (i = 0; i < n; i++)
    -                   {
    -                           value = _beads[i];
    -
    -                           if (bead === value)
    -                           {
    -                                   _beads.splice(i, 1);
    -                    bead.strand = null;
    -                                   return bead;
    -                           }
    -                   }
    -
    -                   return null;
    -           }
    -        
    -        override public function addEventListener(type:String, 
handler:Function, opt_capture:Boolean = false, opt_handlerScope:Object = 
null):void
    -        {
    -            var source:Object = getActualDispatcher_(type);
    -            goog.events.listen(source, type, handler);
    -        }
    -        
    -        override public function removeEventListener(type:String, 
handler:Function, opt_capture:Boolean = false, opt_handlerScope:Object = 
null):void
    -        {
    -            var source:Object = getActualDispatcher_(type);
    -            goog.events.unlisten(source, type, handler);
    -        }
    -        
    +                        
             private function getActualDispatcher_(type:String):Object
             {
                 var source:Object = this;
    @@ -368,48 +217,7 @@ package org.apache.royale.core
                 }
                 return source;
             }
    -        
    -        override public function hasEventListener(type:String):Boolean
    -        {
    -            var source:Object = this.getActualDispatcher_(type);
    -            
    -            return goog.events.hasListener(source, type);
    -        }
    -
    -        /**
    -         * @royaleignorecoercion String
    -         */
    -        override public function dispatchEvent(e:Object):Boolean
    -        {
    -            var eventType:String = "";
    -            if (typeof(e) === 'string')
    -            {
    -                eventType = e as String;
    -                if (e === org.apache.royale.events.Event.CHANGE)
    -                {
    -                    e = EventUtils.createEvent(eventType, e.bubbles);
    -                }
    -            }
    -            else
    -            {
    -                eventType = e.type;
    -                if (ElementEvents.elementEvents[eventType])
    -                {
    -                    e = EventUtils.createEvent(eventType, e.bubbles);
    -                }
    -            }
    -            var source:Object = this.getActualDispatcher_(eventType);
    -                   if (e.bubbles) {
    -                           return dispatchBubblingEvent(source, e);
    -                   }
    -            if (source == this)
    -            {
    -                return super.dispatchEvent(e);
    -            }
    -            
    -            return source.dispatchEvent(e);
    -        }
    -           
    +                   
             /**
              * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
              */
    diff --git 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/KeyboardEvent.as
 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/KeyboardEvent.as
    index bbcaa1d..8719a1e 100644
    --- 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/KeyboardEvent.as
    +++ 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/KeyboardEvent.as
    @@ -21,7 +21,7 @@ package org.apache.royale.events
         COMPILE::JS
         {
             import goog.events.BrowserEvent;
    -        import org.apache.royale.core.HTMLElementWrapper;
    +        import org.apache.royale.core.ElementWrapper;
                import org.apache.royale.events.Event;
             import org.apache.royale.events.utils.KeyboardEventConverter;
         }
    @@ -314,7 +314,7 @@ package org.apache.royale.events
             COMPILE::JS
             public static function setupConverter():Boolean
             {
    -            HTMLElementWrapper.converterMap["KeyboardEvent"] = 
KeyboardEventConverter;
    +            ElementWrapper.converterMap["KeyboardEvent"] = 
KeyboardEventConverter;
                 return true;
             }
             
    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 0d30f31..33bb052 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
    @@ -32,7 +32,7 @@ package org.apache.royale.events
             
             import goog.events.BrowserEvent;
             
    -        import org.apache.royale.core.HTMLElementWrapper;
    +        import org.apache.royale.core.ElementWrapper;
             import org.apache.royale.events.Event;
             import org.apache.royale.events.utils.MouseEventConverter;
         }
    @@ -838,7 +838,7 @@ package org.apache.royale.events
             
             public static function setupConverter():Boolean
             {
    -            HTMLElementWrapper.converterMap["MouseEvent"] = 
MouseEventConverter;
    +            ElementWrapper.converterMap["MouseEvent"] = 
MouseEventConverter;
                 _useNativeConstructor = typeof window.MouseEvent == 'function';
                 return true;
             }
    diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/core/Application.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/core/Application.as
    index 2e79aec..525bed2 100644
    --- a/frameworks/projects/MXRoyale/src/main/royale/mx/core/Application.as
    +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/core/Application.as
    @@ -66,7 +66,7 @@ import mx.managers.FocusManager;
     import mx.managers.ISystemManager;
     
     COMPILE::JS {
    -    import org.apache.royale.core.HTMLElementWrapper;
    +    import org.apache.royale.core.ElementWrapper;
         import org.apache.royale.events.ElementEvents;
     }
     
    @@ -632,9 +632,9 @@ public class Application extends Container implements 
IStrand, IParent, IEventDi
        COMPILE::JS
        public function initializeApplication():void
        {
    -        HTMLElementWrapper.converterMap["MouseEvent"] = 
MouseEventConverter;
    -        HTMLElementWrapper.converterMap["KeyboardEvent"] = 
KeyboardEventConverter;
    -        HTMLElementWrapper.converterMap["FocusEvent"] = 
FocusEventConverter;
    +        ElementWrapper.converterMap["MouseEvent"] = MouseEventConverter;
    +        ElementWrapper.converterMap["KeyboardEvent"] = 
KeyboardEventConverter;
    +        ElementWrapper.converterMap["FocusEvent"] = FocusEventConverter;
             addEventListener(KeyboardEvent.KEY_DOWN, 
keyDownForCapsLockHandler);
             
             initManagers();
    diff --git 
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/Application.as
 
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/Application.as
    index a840ea3..0a85538 100644
    --- 
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/Application.as
    +++ 
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/Application.as
    @@ -67,7 +67,7 @@ import mx.events.utils.MouseEventConverter;
     import mx.managers.ISystemManager;
     
     COMPILE::JS {
    -    import org.apache.royale.core.HTMLElementWrapper;
    +    import org.apache.royale.core.ElementWrapper;
     }
     
     import org.apache.royale.binding.ContainerDataBinding;
    @@ -324,7 +324,7 @@ public class Application extends SkinnableContainer 
implements IStrand, IParent,
             
             COMPILE::JS
             {
    -            HTMLElementWrapper.converterMap["MouseEvent"] = 
MouseEventConverter;
    +            ElementWrapper.converterMap["MouseEvent"] = 
MouseEventConverter;
             }
         }
     
    
    

Reply via email to