aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatti Tahvonen <matti.tahvonen@itmill.com>2009-03-13 11:55:50 +0000
committerMatti Tahvonen <matti.tahvonen@itmill.com>2009-03-13 11:55:50 +0000
commit1e34c818ca32198732264f224814b72933f0bdf5 (patch)
tree98e799b99ddabdb042dcfbc2b89d386a9157404b
parentf2b4d6ce95b957572c93ee77235a62ba8b72a3ba (diff)
downloadvaadin-framework-1e34c818ca32198732264f224814b72933f0bdf5.tar.gz
vaadin-framework-1e34c818ca32198732264f224814b72933f0bdf5.zip
better fix or FF2 performance issues with deep tree
svn changeset:7077/svn branch:6.0
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java34
1 files changed, 24 insertions, 10 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java
index 4edaafbce2..fc7eefc9be 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java
@@ -6,6 +6,7 @@ import java.util.NoSuchElementException;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Style;
+import com.google.gwt.dom.client.TableElement;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
@@ -70,18 +71,31 @@ public class ChildComponentContainer extends Panel {
super();
containerDIV = Document.get().createDivElement();
- setElement(containerDIV);
-
- containerDIV.getStyle().setProperty("height", "0");
- containerDIV.getStyle().setProperty("width", "0px");
- containerDIV.getStyle().setProperty("overflow", "hidden");
widgetDIV = Document.get().createDivElement();
if (BrowserInfo.get().isFF2()) {
Style style = widgetDIV.getStyle();
- style.setProperty("display", "table-cell");
+ // FF2 chokes on some floats very easily. Measuring size escpecially
+ // becomes terribly slow
+ TableElement tableEl = Document.get().createTableElement();
+ tableEl
+ .setInnerHTML("<tbody><tr><td><div></div></td></tr></tbody>");
+ DivElement div = (DivElement) tableEl.getFirstChildElement()
+ .getFirstChildElement().getFirstChildElement()
+ .getFirstChildElement();
+ tableEl.setCellPadding(0);
+ tableEl.setCellSpacing(0);
+ tableEl.setBorder(0);
+ div.getStyle().setProperty("padding", "0");
+
+ setElement(tableEl);
+ containerDIV = div;
} else {
setFloat(widgetDIV, "left");
+ setElement(containerDIV);
+ containerDIV.getStyle().setProperty("height", "0");
+ containerDIV.getStyle().setProperty("width", "0px");
+ containerDIV.getStyle().setProperty("overflow", "hidden");
}
if (BrowserInfo.get().isIE()) {
@@ -157,8 +171,8 @@ public class ChildComponentContainer extends Panel {
contSize.setWidth(0);
containerMarginLeft = 0;
containerMarginTop = 0;
- getElement().getStyle().setProperty("paddingLeft", "0");
- getElement().getStyle().setProperty("paddingTop", "0");
+ containerDIV.getStyle().setProperty("paddingLeft", "0");
+ containerDIV.getStyle().setProperty("paddingTop", "0");
containerExpansion.setHeight(0);
containerExpansion.setWidth(0);
@@ -215,12 +229,12 @@ public class ChildComponentContainer extends Panel {
public void setMarginLeft(int marginLeft) {
containerMarginLeft = marginLeft;
- getElement().getStyle().setPropertyPx("paddingLeft", marginLeft);
+ containerDIV.getStyle().setPropertyPx("paddingLeft", marginLeft);
}
public void setMarginTop(int marginTop) {
containerMarginTop = marginTop;
- getElement().getStyle().setPropertyPx("paddingTop",
+ containerDIV.getStyle().setPropertyPx("paddingTop",
marginTop + alignmentTopOffset);
updateContainerDOMSize();