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
-~----------~----~----~----~------~----~------~--~---

Reply via email to