Reviewers: jlabanca,
Please review this at http://gwt-code-reviews.appspot.com/49803 Affected files: M user/src/com/google/gwt/dom/client/DOMImplMozilla.java M user/src/com/google/gwt/user/client/impl/DOMImplStandard.java Index: user/src/com/google/gwt/dom/client/DOMImplMozilla.java =================================================================== --- user/src/com/google/gwt/dom/client/DOMImplMozilla.java (revision 5638) +++ user/src/com/google/gwt/dom/client/DOMImplMozilla.java (working copy) @@ -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); Index: user/src/com/google/gwt/user/client/impl/DOMImplStandard.java =================================================================== --- user/src/com/google/gwt/user/client/impl/DOMImplStandard.java (revision 5638) +++ user/src/com/google/gwt/user/client/impl/DOMImplStandard.java (working copy) @@ -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 -~----------~----~----~----~------~----~------~--~---