Author: jlaba...@google.com
Date: Tue Apr 14 09:10:36 2009
New Revision: 5231

Modified:
    branches/snapshot-2009.03.30-r5111/branch-info.txt
     
branches/snapshot-2009.03.30-r5111/user/src/com/google/gwt/dom/client/DOMImplMozilla.java
     
branches/snapshot-2009.03.30-r5111/user/src/com/google/gwt/dom/client/DOMImplMozillaOld.java
     
branches/snapshot-2009.03.30-r5111/user/src/com/google/gwt/dom/client/DOMImplSafari.java
     
branches/snapshot-2009.03.30-r5111/user/test/com/google/gwt/dom/client/ElementTest.java

Log:
Merging tr...@5229:5230 into 2009-03-30 release branch.
- Fixes a scrollLeft bug in FF2 in RTL that was recently fixed only for Old  
Mozilla.

svn merge -r 5229:5230 https://google-web-toolkit.googlecode.com/svn/trunk .

Patch by: jlabanca




Modified: branches/snapshot-2009.03.30-r5111/branch-info.txt
==============================================================================
--- branches/snapshot-2009.03.30-r5111/branch-info.txt  (original)
+++ branches/snapshot-2009.03.30-r5111/branch-info.txt  Tue Apr 14 09:10:36  
2009
@@ -10,4 +10,5 @@
  Added imports to GenerateJavaAST so it would compile (r5138)
  A rollback of /tr...@c5075 was merged (r5198) into this branch to undo a  
compiler bug breaking custom field serializers
  /trunk/@5215:5216 was merged (r5217) into this branch to fix a scrollLeft  
bug in RTL
-/trunk/@5222:5223 was merged (r????) into this branch to fix a scrollLeft  
bug in OldMozilla RTL
+/trunk/@5222:5223 was merged (r5224) into this branch to fix a scrollLeft  
bug in OldMozilla RTL
+/trunk/@5229:5230 was merged (r????) into this branch to fix a scrollLeft  
RTL bug in FF2 (same as the OldMozilla bug)

Modified:  
branches/snapshot-2009.03.30-r5111/user/src/com/google/gwt/dom/client/DOMImplMozilla.java
==============================================================================
---  
branches/snapshot-2009.03.30-r5111/user/src/com/google/gwt/dom/client/DOMImplMozilla.java
        
(original)
+++  
branches/snapshot-2009.03.30-r5111/user/src/com/google/gwt/dom/client/DOMImplMozilla.java
        
Tue Apr 14 09:10:36 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:  
branches/snapshot-2009.03.30-r5111/user/src/com/google/gwt/dom/client/DOMImplMozillaOld.java
==============================================================================
---  
branches/snapshot-2009.03.30-r5111/user/src/com/google/gwt/dom/client/DOMImplMozillaOld.java
     
(original)
+++  
branches/snapshot-2009.03.30-r5111/user/src/com/google/gwt/dom/client/DOMImplMozillaOld.java
     
Tue Apr 14 09:10:36 2009
@@ -66,15 +66,6 @@
    }-*/;

    @Override
-  public int getScrollLeft(Element elem) {
-    if (isRTL(elem)) {
-      return super.getScrollLeft(elem)
-          - (elem.getScrollWidth() - elem.getClientWidth());
-    }
-    return super.getScrollLeft(elem);
-  }
-
-  @Override
    public native void setInnerText(Element elem, String text) /*-{
      // Remove all children first.
      while (elem.firstChild) {
@@ -86,14 +77,6 @@
      }
    }-*/;

-  @Override
-  public void setScrollLeft(Element elem, int left) {
-    if (isRTL(elem)) {
-      left += elem.getScrollWidth() - elem.getClientWidth();
-    }
-    super.setScrollLeft(elem, left);
-  }
-
    private native int getAbsoluteLeftImpl(Element viewport, Element elem)  
/*-{
      var doc = elem.ownerDocument;
      var style = doc.defaultView.getComputedStyle(elem, null);
@@ -130,10 +113,5 @@
      }

      return top + viewport.scrollTop;
-  }-*/;
-
-  private native boolean isRTL(Element elem) /*-{
-    var style = elem.ownerDocument.defaultView.getComputedStyle(elem,  
null);
-    return style.direction == 'rtl';
    }-*/;
  }

Modified:  
branches/snapshot-2009.03.30-r5111/user/src/com/google/gwt/dom/client/DOMImplSafari.java
==============================================================================
---  
branches/snapshot-2009.03.30-r5111/user/src/com/google/gwt/dom/client/DOMImplSafari.java
         
(original)
+++  
branches/snapshot-2009.03.30-r5111/user/src/com/google/gwt/dom/client/DOMImplSafari.java
         
Tue Apr 14 09:10:36 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:  
branches/snapshot-2009.03.30-r5111/user/test/com/google/gwt/dom/client/ElementTest.java
==============================================================================
---  
branches/snapshot-2009.03.30-r5111/user/test/com/google/gwt/dom/client/ElementTest.java
  
(original)
+++  
branches/snapshot-2009.03.30-r5111/user/test/com/google/gwt/dom/client/ElementTest.java
  
Tue Apr 14 09:10:36 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