From: Joonas Lehtinen Date: Thu, 3 Jul 2008 16:13:17 +0000 (+0000) Subject: Fixes #1901 and also optimizes DOM creation on other browsers X-Git-Tag: 6.7.0.beta1~4482 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=f5bce6e34b2d61cebfef46061e70e618e7404869;p=vaadin-framework.git Fixes #1901 and also optimizes DOM creation on other browsers svn changeset:5041/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java index c4e1f175ea..334943952a 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java @@ -358,44 +358,34 @@ public abstract class IOrderedLayout extends Panel implements Container { if (!horizontalAlignment.equals("left")) { if (td == null) { - // The previous positioning has been left (or - // unspecified). + // The previous positioning has been left (or unspecified). // Thus we need to create a one-cell-table to position - // this - // element. - - final Element table = DOM.createTable(); - final Element tBody = DOM.createTBody(); - final Element tr = DOM.createTR(); - td = DOM.createTD(); - final Element itable = DOM.createTable(); - final Element itBody = DOM.createTBody(); - final Element itr = DOM.createTR(); - final Element itd = DOM.createTD(); - DOM.appendChild(table, tBody); - DOM.appendChild(tBody, tr); - DOM.appendChild(tr, td); - DOM.appendChild(td, itable); - DOM.appendChild(itable, itBody); - DOM.appendChild(itBody, itr); - DOM.appendChild(itr, itd); - DOM.setElementAttribute(table, "cellpadding", "0"); - DOM.setElementAttribute(table, "cellspacing", "0"); - DOM.setStyleAttribute(table, "width", "100%"); - DOM.setElementAttribute(itable, "cellpadding", "0"); - DOM.setElementAttribute(itable, "cellspacing", "0"); - DOM.setElementAttribute(itd, "align", "left"); - - // move possible content to cell - while (DOM.getChildCount(getElement()) > 0) { - Element content = DOM.getFirstChild(getElement()); - if (content != null) { - DOM.removeChild(getElement(), content); - DOM.appendChild(itd, content); - } + // this element. + + // Store and remove the current childs (widget and caption) + Element c1 = DOM.getFirstChild(getElement()); + DOM.removeChild(getElement(), c1); + Element c2 = DOM.getFirstChild(getElement()); + if (c2 != null) { + DOM.removeChild(getElement(), c2); + } + + // Construct table structure to align children + final String t = "
" + + "
" + + "
"; + DOM.setInnerHTML(getElement(), t); + td = DOM.getFirstChild(DOM.getFirstChild(DOM + .getFirstChild(DOM.getFirstChild(getElement())))); + Element itd = DOM.getFirstChild(DOM.getFirstChild(DOM + .getFirstChild(DOM.getFirstChild(td)))); + + // Restore children inside the + DOM.appendChild(itd, c1); + if (c2 != null) { + DOM.appendChild(itd, c2); } - DOM.appendChild(getElement(), table); } else { // Go around optimization bug in WebKit and ensure repaint