]> source.dussan.org Git - vaadin-framework.git/commitdiff
fixed minor regression with undefined width tables with height defined. Added sanity...
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 23 Apr 2009 21:02:21 +0000 (21:02 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 23 Apr 2009 21:02:21 +0000 (21:02 +0000)
svn changeset:7517/svn branch:6.0

src/com/itmill/toolkit/terminal/gwt/client/ui/IScrollTable.java

index 9b8766c68c3f4c69e686ad80277565d81747f2a1..2f88424374ea2200e3fa91d9a7de028b0ada5a87 100644 (file)
@@ -578,11 +578,27 @@ public class IScrollTable extends FlowPanel implements Table, ScrollListener {
 
         tHead.disableBrowserIntelligence();
 
+        boolean willHaveScrollbarz = false;
+        if (!(height != null && !height.equals(""))) {
+            if (pageLength < totalRows) {
+                willHaveScrollbarz = true;
+            }
+        } else {
+            int fakeheight = tBody.getRowHeight() * totalRows;
+            int availableHeight = bodyContainer.getElement().getPropertyInt(
+                    "clientHeight");
+            if (fakeheight > availableHeight) {
+                willHaveScrollbarz = true;
+            }
+        }
+
         // fix "natural" width if width not set
         if (width == null || "".equals(width)) {
             int w = total;
             w += tBody.getCellExtraWidth() * visibleColOrder.length;
-            w += getScrollbarWidth();
+            if (willHaveScrollbarz) {
+                w += Util.getNativeScrollbarSize();
+            }
             setContentWidth(w);
         }
 
@@ -591,10 +607,8 @@ public class IScrollTable extends FlowPanel implements Table, ScrollListener {
         availW = tBody.getAvailableWidth();
         availW -= tBody.getCellExtraWidth() * visibleColOrder.length;
 
-        if (!(height != null && !height.equals(""))) {
-            if (pageLength < totalRows) {
-                availW -= Util.getNativeScrollbarSize();
-            }
+        if (willHaveScrollbarz) {
+            availW -= Util.getNativeScrollbarSize();
         }
 
         boolean needsReLayout = false;
@@ -2000,14 +2014,18 @@ public class IScrollTable extends FlowPanel implements Table, ScrollListener {
                 index = renderedRows.size() - 1;
                 lastRendered--;
             }
-            final IScrollTableRow toBeRemoved = (IScrollTableRow) renderedRows
-                    .get(index);
-            lazyUnregistryBag.add(toBeRemoved);
-            tBodyElement.removeChild(toBeRemoved.getElement());
-            orphan(toBeRemoved);
-            renderedRows.remove(index);
-            fixSpacers();
-            return true;
+            if (index >= 0) {
+                final IScrollTableRow toBeRemoved = (IScrollTableRow) renderedRows
+                        .get(index);
+                lazyUnregistryBag.add(toBeRemoved);
+                tBodyElement.removeChild(toBeRemoved.getElement());
+                orphan(toBeRemoved);
+                renderedRows.remove(index);
+                fixSpacers();
+                return true;
+            } else {
+                return false;
+            }
         }
 
         @Override