Author: [email protected] Date: Tue Jun 30 08:01:08 2009 New Revision: 5641 Modified: trunk/user/src/com/google/gwt/dom/client/DOMImplMozilla.java trunk/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java
Log: Fix for Firefox 3.5 relatedTarget bug (https://bugzilla.mozilla.org/show_bug.cgi?id=497780) Review: http://gwt-code-reviews.appspot.com/49803 Modified: trunk/user/src/com/google/gwt/dom/client/DOMImplMozilla.java ============================================================================== --- trunk/user/src/com/google/gwt/dom/client/DOMImplMozilla.java (original) +++ trunk/user/src/com/google/gwt/dom/client/DOMImplMozilla.java Tue Jun 30 08:01:08 2009 @@ -37,6 +37,20 @@ }-*/; @Override + public native EventTarget eventGetRelatedTarget(NativeEvent evt) /*-{ + // Hack around Mozilla bug 497780 (relatedTarget sometimes returns XUL + // elements). Trying to access relatedTarget.nodeName will throw an + // exception if it's a XUL element. + var relatedTarget = evt.relatedTarget; + try { + var nodeName = relatedTarget.nodeName; + return relatedTarget; + } catch (e) { + return null; + } + }-*/; + + @Override public int getAbsoluteLeft(Element elem) { return getAbsoluteLeftImpl(elem.getOwnerDocument().getViewportElement(), elem); Modified: trunk/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java ============================================================================== --- trunk/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java (original) +++ trunk/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java Tue Jun 30 08:01:08 2009 @@ -39,22 +39,30 @@ private static JavaScriptObject dispatchEvent; @Override - public native Element eventGetFromElement(Event evt) /*-{ - if (evt.type == "mouseover") - return evt.relatedTarget; - if (evt.type == "mouseout") - return evt.target; + public Element eventGetFromElement(Event evt) { + if (evt.getType().equals("mouseover")) { + return evt.getRelatedTarget().cast(); + } + + if (evt.getType().equals("mouseout")) { + return evt.getTarget().cast(); + } + return null; - }-*/; + } @Override - public native Element eventGetToElement(Event evt) /*-{ - if (evt.type == "mouseover") - return evt.target; - if (evt.type == "mouseout") - return evt.relatedTarget; + public Element eventGetToElement(Event evt) { + if (evt.getType().equals("mouseover")) { + return evt.getTarget().cast(); + } + + if (evt.getType().equals("mouseout")) { + return evt.getRelatedTarget().cast(); + } + return null; - }-*/; + } @Override public native Element getChild(Element elem, int index) /*-{ --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---
