Author: [email protected]
Date: Wed May 20 06:50:05 2009
New Revision: 5440

Modified:
    releases/1.6/user/src/com/google/gwt/dom/client/DOMImplMozilla.java
    releases/1.6/user/src/com/google/gwt/dom/client/DOMImplMozillaOld.java
    releases/1.6/user/src/com/google/gwt/dom/client/DOMImplSafari.java
    releases/1.6/user/test/com/google/gwt/dom/client/ElementTest.java

Log:
Merging /trunk r5230 into /releases/1.6.


Modified:  
releases/1.6/user/src/com/google/gwt/dom/client/DOMImplMozilla.java
==============================================================================
--- releases/1.6/user/src/com/google/gwt/dom/client/DOMImplMozilla.java  
(original)
+++ releases/1.6/user/src/com/google/gwt/dom/client/DOMImplMozilla.java Wed  
May 20 06:50:05 2009
@@ -15,6 +15,7 @@
   */
  package com.google.gwt.dom.client;

+
  /**
   * Mozilla implementation of StandardBrowser.
   */
@@ -66,6 +67,15 @@
    }-*/;

    @Override
+  public int getScrollLeft(Element elem) {
+    if (!isGecko19() && isRTL(elem)) {
+      return super.getScrollLeft(elem)
+          - (elem.getScrollWidth() - elem.getClientWidth());
+    }
+    return super.getScrollLeft(elem);
+  }
+
+  @Override
    public native boolean isOrHasChild(Element parent, Element child) /*-{
      // For more information about compareDocumentPosition, see:
      // http://www.quirksmode.org/blog/archives/2006/01/contains_for_mo.html
@@ -78,6 +88,14 @@
    }-*/;

    @Override
+  public void setScrollLeft(Element elem, int left) {
+    if (!isGecko19() && isRTL(elem)) {
+      left += elem.getScrollWidth() - elem.getClientWidth();
+    }
+    super.setScrollLeft(elem, left);
+  }
+
+  @Override
    public native String toString(Element elem) /*-{
      // Basic idea is to use the innerHTML property by copying the node  
into a
      // div and getting the innerHTML
@@ -130,5 +148,21 @@
        return doc.getBoxObjectFor(elem).screenY -
          doc.getBoxObjectFor(doc.documentElement).screenY;
      }
+  }-*/;
+
+  private native boolean isGecko19() /*-{
+    var result =  
/rv:([0-9]+)\.([0-9]+)/.exec(navigator.userAgent.toLowerCase());
+    if (result && result.length == 3) {
+      var version = (parseInt(result[1]) * 1000) + parseInt(result[2]);
+      if (version >= 1009) {
+        return true;
+      }
+    }
+    return false;
+  }-*/;
+
+  private native boolean isRTL(Element elem) /*-{
+    var style = elem.ownerDocument.defaultView.getComputedStyle(elem,  
null);
+    return style.direction == 'rtl';
    }-*/;
  }

Modified:  
releases/1.6/user/src/com/google/gwt/dom/client/DOMImplMozillaOld.java
==============================================================================
--- releases/1.6/user/src/com/google/gwt/dom/client/DOMImplMozillaOld.java      
 
(original)
+++ releases/1.6/user/src/com/google/gwt/dom/client/DOMImplMozillaOld.java      
 
Wed May 20 06:50:05 2009
@@ -64,7 +64,7 @@
        elem.appendChild(elem.ownerDocument.createTextNode(text));
      }
    }-*/;
-
+
    private native int getAbsoluteLeftImpl(Element viewport, Element elem)  
/*-{
      var doc = elem.ownerDocument;
      var style = doc.defaultView.getComputedStyle(elem, null);

Modified: releases/1.6/user/src/com/google/gwt/dom/client/DOMImplSafari.java
==============================================================================
--- releases/1.6/user/src/com/google/gwt/dom/client/DOMImplSafari.java   
(original)
+++ releases/1.6/user/src/com/google/gwt/dom/client/DOMImplSafari.java  Wed  
May 20 06:50:05 2009
@@ -236,6 +236,6 @@
    }

    private native boolean isRTL(Element elem) /*-{
-    return $wnd.getComputedStyle(elem).direction == 'rtl';
+    return  
elem.ownerDocument.defaultView.getComputedStyle(elem, '').direction  
== 'rtl';
    }-*/;
  }

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  
May 20 06:50:05 2009
@@ -142,13 +142,23 @@
      // correctly in RTL mode.
      outer.getStyle().setProperty("overflow", "scroll");

+    inner.getStyle().setProperty("position", "absolute");
+    inner.getStyle().setProperty("top", "0px");
+    inner.getStyle().setProperty("left", "0px");
+    inner.getStyle().setProperty("right", "0px");
      inner.getStyle().setProperty("marginTop", "800px");
      inner.getStyle().setProperty("marginRight", "800px");

      outer.appendChild(inner);
      Document.get().getBody().appendChild(outer);
-    inner.setInnerText(":-)");
      outer.setDir("rtl");
+
+    // FF2 does not render scroll bars reliably in RTL, so we set a large
+    // content to force the scroll bars.
+    String content = "ssssssssssssssssssssssssssssssssssssssssssssssssssss"
+        + "sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"
+         
+ "sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss";
+    inner.setInnerText(content);

      // The important thing is that setting and retrieving scrollLeft  
values in
      // RTL mode works only for negative numbers, and that they round-trip

--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to