Author: [email protected]
Date: Wed Jun 24 07:36:49 2009
New Revision: 5623
Modified:
releases/1.6/user/src/com/google/gwt/dom/client/DOMImplIE6.java
releases/1.6/user/src/com/google/gwt/dom/client/DOMImplIE8.java
releases/1.6/user/src/com/google/gwt/dom/client/DOMImplTrident.java
releases/1.6/user/test/com/google/gwt/dom/client/ElementTest.java
Log:
Merging trunk r5485 into releases/1.6
Modified: releases/1.6/user/src/com/google/gwt/dom/client/DOMImplIE6.java
==============================================================================
--- releases/1.6/user/src/com/google/gwt/dom/client/DOMImplIE6.java
(original)
+++ releases/1.6/user/src/com/google/gwt/dom/client/DOMImplIE6.java Wed Jun
24 07:36:49 2009
@@ -24,14 +24,14 @@
@Override
public int getAbsoluteLeft(Element elem) {
Document doc = elem.getOwnerDocument();
- return (int) Math.floor(super.getAbsoluteLeft(elem)
+ return (int) Math.floor(getBoundingClientRectLeft(elem)
/ getZoomMultiple(doc) + doc.getScrollLeft());
}
@Override
public int getAbsoluteTop(Element elem) {
Document doc = elem.getOwnerDocument();
- return (int) Math.floor(super.getAbsoluteTop(elem)
+ return (int) Math.floor(getBoundingClientRectTop(elem)
/ getZoomMultiple(doc) + doc.getScrollTop());
}
Modified: releases/1.6/user/src/com/google/gwt/dom/client/DOMImplIE8.java
==============================================================================
--- releases/1.6/user/src/com/google/gwt/dom/client/DOMImplIE8.java
(original)
+++ releases/1.6/user/src/com/google/gwt/dom/client/DOMImplIE8.java Wed Jun
24 07:36:49 2009
@@ -18,6 +18,18 @@
class DOMImplIE8 extends DOMImplTrident {
@Override
+ public int getAbsoluteLeft(Element elem) {
+ Document doc = elem.getOwnerDocument();
+ return getBoundingClientRectLeft(elem) + doc.getScrollLeft();
+ }
+
+ @Override
+ public int getAbsoluteTop(Element elem) {
+ Document doc = elem.getOwnerDocument();
+ return getBoundingClientRectTop(elem) + doc.getScrollTop();
+ }
+
+ @Override
public int getScrollLeft(Element elem) {
if (isRTL(elem)) {
// IE8 returns increasingly *positive* values as you scroll left in
RTL.
Modified:
releases/1.6/user/src/com/google/gwt/dom/client/DOMImplTrident.java
==============================================================================
--- releases/1.6/user/src/com/google/gwt/dom/client/DOMImplTrident.java
(original)
+++ releases/1.6/user/src/com/google/gwt/dom/client/DOMImplTrident.java Wed
Jun 24 07:36:49 2009
@@ -145,16 +145,6 @@
return "[event" + evt.type + "]";
}-*/;
- @Override
- public int getAbsoluteLeft(Element elem) {
- return getBoundingClientRectLeft(elem);
- }
-
- @Override
- public int getAbsoluteTop(Element elem) {
- return getBoundingClientRectTop(elem);
- }
-
/**
* IE returns a numeric type for some attributes that are really
properties,
* such as offsetWidth. We need to coerce these to strings to prevent a
@@ -209,11 +199,7 @@
elem.innerText = text || '';
}-*/;
- protected native boolean isRTL(Element elem) /*-{
- return elem.currentStyle.direction == 'rtl';
- }-*/;
-
- private native int getBoundingClientRectLeft(Element elem) /*-{
+ protected native int getBoundingClientRectLeft(Element elem) /*-{
// getBoundingClientRect() throws a JS exception if the elem is not
attached
// to the document, so we wrap it in a try/catch block
try {
@@ -223,7 +209,7 @@
}
}-*/;
- private native int getBoundingClientRectTop(Element elem) /*-{
+ protected native int getBoundingClientRectTop(Element elem) /*-{
// getBoundingClientRect() throws a JS exception if the elem is not
attached
// to the document, so we wrap it in a try/catch block
try {
@@ -231,6 +217,22 @@
} catch (e) {
return 0;
}
+ }-*/;
+
+ protected native boolean isRTL(Element elem) /*-{
+ return elem.currentStyle.direction == 'rtl';
+ }-*/;
+
+ private native Element createElementInternal(Document doc, String
tagName) /*-{
+ return doc.createElement(tagName);
+ }-*/;
+
+ // IE needs a container div *for each document* for use by
createElement().
+ private native Element ensureContainer(Document doc) /*-{
+ if (!doc.__gwt_container) {
+ doc.__gwt_container = doc.createElement('div');
+ }
+ return doc.__gwt_container;
}-*/;
/**
Modified: releases/1.6/user/test/com/google/gwt/dom/client/ElementTest.java
==============================================================================
--- releases/1.6/user/test/com/google/gwt/dom/client/ElementTest.java
(original)
+++ releases/1.6/user/test/com/google/gwt/dom/client/ElementTest.java Wed
Jun 24 07:36:49 2009
@@ -91,9 +91,34 @@
}
/**
+ * scroll[Left|Top], getAbsolute[Left|Top].
+ */
+ public void testGetAbsolutePositionWhenBodyScrolled() {
+ Document doc = Document.get();
+ BodyElement body = doc.getBody();
+
+ DivElement div = doc.createDivElement();
+ body.appendChild(div);
+
+ div.setInnerText("foo");
+ div.getStyle().setProperty("position", "absolute");
+ div.getStyle().setPropertyPx("left", 1000);
+ div.getStyle().setPropertyPx("top", 1000);
+
+ int absLeft = div.getAbsoluteLeft();
+ int absTop = div.getAbsoluteTop();
+
+ body.setScrollLeft(10000);
+ body.setScrollTop(10000);
+
+ assertEquals(absLeft, div.getAbsoluteLeft());
+ assertEquals(absTop, div.getAbsoluteTop());
+ }
+
+ /**
* scroll[Left|Top], scrollIntoView.
*/
- public void testGetAbsolutePositionWhenScrolled() {
+ public void testScrollIntoView() {
final DivElement outer = Document.get().createDivElement();
final DivElement inner = Document.get().createDivElement();
--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---