Fixed issue where TreeItems can be cropped because their overflow is set to hidden.

Patch by: jlabanca
Review by: jgw (desk review)



git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2410 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/client/ui/TreeItem.java b/user/src/com/google/gwt/user/client/ui/TreeItem.java
index 4d986c3..5268c6b 100644
--- a/user/src/com/google/gwt/user/client/ui/TreeItem.java
+++ b/user/src/com/google/gwt/user/client/ui/TreeItem.java
@@ -67,6 +67,8 @@
         } else {
           UIObject.setVisible(curItem.childSpanElem, false);
         }
+        DOM.setStyleAttribute(curItem.childSpanElem, "overflow", "visible");
+        DOM.setStyleAttribute(curItem.childSpanElem, "width", "auto");
         curItem = null;
       }
     }
@@ -79,6 +81,7 @@
 
     @Override
     public void onStart() {
+      DOM.setStyleAttribute(curItem.childSpanElem, "overflow", "hidden");
       onUpdate(0.0);
       if (opening) {
         UIObject.setVisible(curItem.childSpanElem, true);
@@ -94,6 +97,11 @@
         height = scrollHeight - height;
       }
       DOM.setStyleAttribute(curItem.childSpanElem, "height", height + "px");
+
+      // We need to set the width explicitly of the item might be cropped
+      int scrollWidth = DOM.getElementPropertyInt(curItem.childSpanElem,
+          "scrollWidth");
+      DOM.setStyleAttribute(curItem.childSpanElem, "width", scrollWidth + "px");
     }
 
     /**
@@ -110,7 +118,7 @@
       curItem = item;
       opening = item.open;
       if (animate) {
-        run(350);
+        run(Math.min(200, 75 * curItem.getChildCount()));
       } else {
         onInstantaneousRun();
       }
@@ -169,7 +177,7 @@
     DOM.setStyleAttribute(contentElem, "display", "inline");
     DOM.setStyleAttribute(getElement(), "whiteSpace", "nowrap");
     DOM.setStyleAttribute(childSpanElem, "whiteSpace", "nowrap");
-    DOM.setStyleAttribute(childSpanElem, "overflow", "hidden");
+    DOM.setStyleAttribute(childSpanElem, "padding", "0px");
     setStyleName(contentElem, "gwt-TreeItem", true);
 
     Accessibility.setRole(contentElem, Accessibility.ROLE_TREEITEM);