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&data=02%7C01%7Caharui%40adobe.com%7Cec736cad56b3465bb2aa08d786fd7eea%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637126295667140081&sdata=ELMay%2FqtfOHVtm0GoQNdXhXrxhKRerWukYuHHhqZJ4E%3D&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;
}
}