Fixed a TreeItem bug where leaf nodes were converted to full nodes when a child was added, but they were assumed to be leaf nodes when the last child was removed.  Now, we check if the item has been converted to a full node and apply the leaf image if it has, otherwise we apply the margin in place of the leaf image.

Patch by: jlabanca
Review by: ecc (desk)
Issue: 2491



git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@3692 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/client/ui/Tree.java b/user/src/com/google/gwt/user/client/ui/Tree.java
index 222f319..0a26558 100644
--- a/user/src/com/google/gwt/user/client/ui/Tree.java
+++ b/user/src/com/google/gwt/user/client/ui/Tree.java
@@ -777,7 +777,7 @@
    * @param treeItem the tree item
    */
   void showLeafImage(TreeItem treeItem) {
-    if (useLeafImages) {
+    if (useLeafImages || treeItem.isFullNode()) {
       showImage(treeItem, images.treeLeaf());
     } else {
       DOM.setStyleAttribute(treeItem.getElement(), "paddingLeft", indentValue);
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 724beab..a26ce4a 100644
--- a/user/src/com/google/gwt/user/client/ui/TreeItem.java
+++ b/user/src/com/google/gwt/user/client/ui/TreeItem.java
@@ -688,7 +688,7 @@
   }
 
   Element getImageHolderElement() {
-    if (imageHolder == null) {
+    if (!isFullNode()) {
       convertToFullNode();
     }
     return imageHolder;
@@ -702,6 +702,10 @@
     children = new ArrayList<TreeItem>();
   }
 
+  boolean isFullNode() {
+    return imageHolder != null;
+  }
+
   void setParentItem(TreeItem parent) {
     this.parent = parent;
   }