Backport of fixes to issues 1702 and 1942 (Firefox 3 support), originally
commited to trunk in r1533 and r1871.
Original log messages:
r1533:
Fixes issue #1702.
insertListItem current created an option element with the wrong
owner document. This causes errors in FF3 preview builds.
Review by: ecc
r1871:
Fixes Issue 1942
FF3 Beta 1 throws WRONG_DOCUMENT_ERROR in getBoxObjectFor if the
element is not attached to the DOM. This affects our implementation
of Tree when an element is selected programmatically on a tree that
is unattached. This change wraps the call to getBoxObjectFor in a
try/catch and returns 0 if a WRONG_DOCUMENT_ERROR occurs, which
emulates what getBoxObjectFor is supposed to do. This bug is set
to P1 in bugzilla, https://bugzilla.mozilla.org/show_bug.cgi?id=409111,
so this change can be saftely removed in the future.
Found by: mmastrac
Review by: jgw
git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.4@1887 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 ab5dc71..07a4235 100644
--- a/user/src/com/google/gwt/user/client/impl/DOMImpl.java
+++ b/user/src/com/google/gwt/user/client/impl/DOMImpl.java
@@ -274,7 +274,7 @@
*/
public native void insertListItem(Element select, String item, String value,
int index)/*-{
- var option = new Option(item, value);
+ var option = new $wnd.Option(item, value);
if (index == -1 || index > select.options.length - 1) {
select.add(option, null);
} else {
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImplMozilla.java b/user/src/com/google/gwt/user/client/impl/DOMImplMozilla.java
index d3d7419..122471f 100644
--- a/user/src/com/google/gwt/user/client/impl/DOMImplMozilla.java
+++ b/user/src/com/google/gwt/user/client/impl/DOMImplMozilla.java
@@ -57,8 +57,20 @@
// here due to a change in getBoxObjectFor which causes inconsistencies
// on whether the calculations are inside or outside of the element's
// border.
- return $doc.getBoxObjectFor(elem).screenX
- - $doc.getBoxObjectFor($doc.documentElement).screenX;
+ try {
+ return $doc.getBoxObjectFor(elem).screenX
+ - $doc.getBoxObjectFor($doc.documentElement).screenX;
+ } catch (e) {
+ // This works around a bug in the FF3 betas. The bug
+ // should be fixed before they release, so this can
+ // be removed at a later date.
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=409111
+ // DOMException.WRONG_DOCUMENT_ERR == 4
+ if (e.code == 4) {
+ return 0;
+ }
+ throw e;
+ }
}-*/;
public native int getAbsoluteTop(Element elem) /*-{
@@ -67,8 +79,20 @@
// here due to a change in getBoxObjectFor which causes inconsistencies
// on whether the calculations are inside or outside of the element's
// border.
- return $doc.getBoxObjectFor(elem).screenY
- - $doc.getBoxObjectFor($doc.documentElement).screenY;
+ try {
+ return $doc.getBoxObjectFor(elem).screenY
+ - $doc.getBoxObjectFor($doc.documentElement).screenY;
+ } catch (e) {
+ // This works around a bug in the FF3 betas. The bug
+ // should be fixed before they release, so this can
+ // be removed at a later date.
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=409111
+ // DOMException.WRONG_DOCUMENT_ERR == 4
+ if (e.code == 4) {
+ return 0;
+ }
+ throw e;
+ }
}-*/;
public native int getChildIndex(Element parent, Element toFind) /*-{