From 9e50f193e61b0905597d96ef60d3a42e3707f37f Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Tue, 24 Jun 2008 08:51:41 +0000 Subject: [PATCH] fixes #1743 (natural height horizontal expand layout) svn changeset:4943/svn branch:trunk --- .../terminal/gwt/client/ui/IExpandLayout.java | 21 ++++++++++++++++--- .../toolkit/tests/TestForExpandLayout.java | 17 ++++++++++++--- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IExpandLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IExpandLayout.java index 848523b9a1..b52af237bb 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IExpandLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IExpandLayout.java @@ -352,9 +352,24 @@ public class IExpandLayout extends ComplexPanel implements public void iLayout() { if (orientationMode == ORIENTATION_HORIZONTAL) { - int pixels = getOffsetHeight() - getTopMargin() - getBottomMargin(); - if (pixels < 0) { - pixels = 0; + int pixels; + if ("".equals(height)) { + // try to find minimum height by looping all widgets + int maxHeight = 0; + Iterator iterator = getPaintables().iterator(); + while (iterator.hasNext()) { + Widget w = (Widget) iterator.next(); + int h = w.getOffsetHeight(); + if (h > maxHeight) { + maxHeight = h; + } + } + pixels = maxHeight; + } else { + pixels = getOffsetHeight() - getTopMargin() - getBottomMargin(); + if (pixels < 0) { + pixels = 0; + } } DOM.setStyleAttribute(marginElement, "height", pixels + "px"); DOM.setStyleAttribute(marginElement, "overflow", "hidden"); diff --git a/src/com/itmill/toolkit/tests/TestForExpandLayout.java b/src/com/itmill/toolkit/tests/TestForExpandLayout.java index c077390b2a..1e07bcd225 100644 --- a/src/com/itmill/toolkit/tests/TestForExpandLayout.java +++ b/src/com/itmill/toolkit/tests/TestForExpandLayout.java @@ -9,6 +9,7 @@ import com.itmill.toolkit.ui.DateField; import com.itmill.toolkit.ui.ExpandLayout; import com.itmill.toolkit.ui.Label; import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.Panel; /** * @@ -27,15 +28,25 @@ public class TestForExpandLayout extends CustomComponent { public void createNewView() { main.removeAllComponents(); - for (int i = 0; i < 10; i++) { + for (int i = 0; i < 6; i++) { final ExpandLayout el = new ExpandLayout( OrderedLayout.ORIENTATION_HORIZONTAL); - for (int j = 0; j < 10; j++) { + for (int j = 0; j < i + 3; j++) { final Label l = new Label("label" + i + ":" + j); el.addComponent(l); } if (i > 0) { - el.setHeight(1, ExpandLayout.UNITS_EM); + // el.setMargin(true); + el.setSizeUndefined(); + el.setWidth("100%"); + if (i % 2 == 0) { + el.setHeight("8em"); + Panel p = new Panel("tp"); + p.addComponent(new Label("panelc")); + p.setHeight("100%"); + p.setWidth("100px"); + el.addComponent(p); + } } main.addComponent(el); } -- 2.39.5