Fixes eventGetFromElement() on standard browsers (i.e. not IE).
Patch by: bobv
Review by: jgw


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@1011 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImpl.java b/user/src/com/google/gwt/user/client/impl/DOMImpl.java
index c6b4f88..6c05f07 100644
--- a/user/src/com/google/gwt/user/client/impl/DOMImpl.java
+++ b/user/src/com/google/gwt/user/client/impl/DOMImpl.java
@@ -75,9 +75,7 @@
     return evt.ctrlKey;
   }-*/;
 
-  public native Element eventGetFromElement(Event evt) /*-{
-    return evt.fromElement || null;
-  }-*/;
+  public abstract Element eventGetFromElement(Event evt);
 
   public native int eventGetKeyCode(Event evt) /*-{
     // 'which' gives the right key value, except when it doesn't -- in which
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImplIE6.java b/user/src/com/google/gwt/user/client/impl/DOMImplIE6.java
index f3094da..64b4163 100644
--- a/user/src/com/google/gwt/user/client/impl/DOMImplIE6.java
+++ b/user/src/com/google/gwt/user/client/impl/DOMImplIE6.java
@@ -36,6 +36,10 @@
     return $doc.createElement("<INPUT type='RADIO' name='" + group + "'>");
   }-*/;
 
+  public native Element eventGetFromElement(Event evt) /*-{
+    return evt.fromElement ? evt.fromElement : null;
+  }-*/;
+
   /**
    * Supports creating a select control with the multiple attribute to work
    * around a bug in IE6 where changing the multiple attribute in a
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java b/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java
index f66e9e1..e402241 100644
--- a/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java
+++ b/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java
@@ -36,6 +36,11 @@
     return elem;
   }-*/;
 
+  public native Element eventGetFromElement(Event evt) /*-{
+    // Standard browsers use relatedTarget rather than fromElement.
+    return evt.relatedTarget ? evt.relatedTarget : null;
+  }-*/;
+
   public native Element eventGetTarget(Event evt) /*-{
     return evt.target || null;
   }-*/;