From: jdramaix Date: Thu, 28 Nov 2013 23:38:43 +0000 (+0100) Subject: fix ie8 custom event X-Git-Tag: release-1.4.0~27^2~1 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c87250329232dcc4be705ad038d41e1309106838;p=gwtquery.git fix ie8 custom event --- diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/Query.gwt.xml b/gwtquery-core/src/main/java/com/google/gwt/query/Query.gwt.xml index a902fd99..e12b298e 100644 --- a/gwtquery-core/src/main/java/com/google/gwt/query/Query.gwt.xml +++ b/gwtquery-core/src/main/java/com/google/gwt/query/Query.gwt.xml @@ -144,6 +144,15 @@ + + + + + + + + + diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/Events.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/Events.java index 94d1ab8d..897807f9 100644 --- a/gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/Events.java +++ b/gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/Events.java @@ -13,6 +13,7 @@ */ package com.google.gwt.query.client.plugins; +import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.FormElement; import com.google.gwt.dom.client.NativeEvent; @@ -36,6 +37,8 @@ public class Events extends GQuery { } }); + private static final EventDispatcher EVENT_DISPATCHER = GWT.create(EventDispatcher.class); + /** * Don't apply events on text and comment nodes !! */ @@ -377,7 +380,9 @@ public class Events extends GQuery { for (Element e : elements()) { if (isEventCapable(e)) { $(e).data(EventsListener.EVENT_DATA, datas); - e.dispatchEvent(evt); + + EVENT_DISPATCHER.dispatch(e, evt); + if (!JsUtils.isDefaultPrevented(evt)) { callHandlers(e, evt, funcs); } @@ -393,4 +398,22 @@ public class Events extends GQuery { } } + static class EventDispatcher { + public void dispatch(Element e, NativeEvent evt) { + e.dispatchEvent(evt); + } + } + + @SuppressWarnings("unused") + static class EventDispatcherTrident extends EventDispatcher { + public void dispatch(Element e, NativeEvent evt) { + // bitless event ? + if (Event.getTypeInt(evt.getType()) != -1) { + super.dispatch(e, evt); + } else { + EventsListener.getInstance(e).dispatchEvent(evt.cast()); + } + } + } + }