From 2d91d1216d9e4c5abec563639bee2134610f4e38 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Fri, 28 Nov 2008 09:47:08 +0000 Subject: [PATCH] Fix for #2240 OrderedLayout size updates svn changeset:6035/svn branch:trunk --- .../gwt/client/ui/IOrderedLayout.java | 47 +++++++++++++++---- 1 file changed, 39 insertions(+), 8 deletions(-) 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 91dc7253f5..ed3b1711ee 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java @@ -123,14 +123,7 @@ public class IOrderedLayout extends CellBasedLayout { // w.mark("Alignments and expand ratios updated"); /* Fetch widget sizes from rendered components */ - for (ChildComponentContainer childComponentContainer : widgetToComponentContainer - .values()) { - - /* - * Update widget size from DOM - */ - childComponentContainer.updateWidgetSize(); - } + updateWidgetSizes(); // w.mark("Widget sizes updated"); recalculateLayout(); @@ -209,6 +202,17 @@ public class IOrderedLayout extends CellBasedLayout { isRendering = false; } + private void updateWidgetSizes() { + for (ChildComponentContainer childComponentContainer : widgetToComponentContainer + .values()) { + + /* + * Update widget size from DOM + */ + childComponentContainer.updateWidgetSize(); + } + } + private void recalculateLayout() { /* Calculate space for relative size components */ @@ -646,6 +650,33 @@ public class IOrderedLayout extends CellBasedLayout { private void recalculateLayoutAndComponentSizes() { recalculateLayout(); + if (isDynamicHeight()) { + /* + * Height is not necessarily correct anymore as the height of + * components might have changed if the width has changed. + */ + + /* First update relative sized components */ + for (ChildComponentContainer componentContainer : widgetToComponentContainer + .values()) { + if (componentContainer + .isComponentRelativeSized(ORIENTATION_HORIZONTAL)) { + client.handleComponentRelativeSize(componentContainer + .getWidget()); + } + } + + /* + * Get the new widget sizes from DOM and calculate new container + * sizes + */ + updateWidgetSizes(); + calculateContainerSize(); + + /* Finally calculate new layout height */ + calculateLayoutDimensions(); + } + recalculateComponentSizesAndAlignments(); setRootSize(); -- 2.39.5