Answering my own question.
I managed to fix it in a transparent way. It turned out to be rather
simple after all.
Just in case anyone searches for this issue in the future, here's what I
did:
qx.Class.define("MyElement",
extend : qx.html.Element,
members : {
addListener : function(type, listener, self, capture) {
if (this.$$disposed) {
return null;
}
if (qx.bom.Event.supportsEvent(this.getDomElement(), type)) {
//attach listener to native event
return this.base(arguments, type, listener, self, capture);
}
else {
//attach listener to qooxdoo event
return qx.event.Registration.addListener(this, type, listener,
self, capture);
}
},
removeListener: function(type, listener, self, capture) {
if (this.$$disposed) {
return null;
}
if (qx.bom.Event.supportsEvent(this.getDomElement(), type)) {
//remove listener from native event
return this.base(arguments, type, listener, self, capture);
}
else {
//remove listener from qooxdoo event
return qx.event.Registration.removeListener(this, type,
listener, self, capture);
}
},
removeListenerById: function(id) {
if (this.$$disposed) {
return null;
}
//get event type from listener id
var type = id.split("|")[0];
if (qx.bom.Event.supportsEvent(this.getDomElement(), type)) {
//remove listener from native event
return this.base(arguments, id);
}
else {
//remove listener from qooxdoo event
return qx.event.Registration.removeListenerById(this, id);
}
}
}
});
Regards,
Marc
On 05/02/2011 04:52 PM, Marc Puts wrote:
> Hello everyone,
> I hope you all had some nice Easter holidays. :)
>
> I'm hoping someone could help me on the post quoted below (submitted
> last Friday), since I'm still trying to find the right solution. :)
>
> Regards,
> Marc
>
>
> On 04/29/2011 03:37 PM, Marc Puts wrote:
>> In the SVG contrib, I have many classes that extend qx.html.Element. Most of
>> these also define new events (sometimes explicitly, sometimes as property
>> events). The problem is, that a qx.html.Element will not fire any events
>> except for the native events from the DOM element.
>>
>> The cause of this is that qx.html.Element overrides the addListener method
>> of qx.core.Object, so that all events are mapped directly to the DOM
>> element. Unfortunately, this suppresses the framework's event system.
>>
>> Playground example: http://tinyurl.com/66hcyp7
>> In the example, you need to change "extend: qx.html.Element" to "extend:
>> qx.core.Object" to make it work.
>>
>>
>> I'm looking for a feasible workaround for this limitation; so I can mix
>> qooxdoo events and native events within qx.html.Element subclasses.
>>
>> One way would be to add a addEventListener method to my classes, which mimic
>> the addListener method of qx.core.Object. However, this could cause
>> confusion for the user, who probably won't know when to use addListener and
>> when to use addEventListener.
>>
>> I'm hoping someone could suggest a better approach to this. :)
>
------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network
management toolset available today. Delivers lowest initial
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel