// w.mark("Alignments and expand ratios updated");\r
\r
/* Fetch widget sizes from rendered components */\r
- for (ChildComponentContainer childComponentContainer : widgetToComponentContainer\r
- .values()) {\r
-\r
- /*\r
- * Update widget size from DOM\r
- */\r
- childComponentContainer.updateWidgetSize();\r
- }\r
+ updateWidgetSizes();\r
// w.mark("Widget sizes updated");\r
\r
recalculateLayout();\r
isRendering = false;\r
}\r
\r
+ private void updateWidgetSizes() {\r
+ for (ChildComponentContainer childComponentContainer : widgetToComponentContainer\r
+ .values()) {\r
+\r
+ /*\r
+ * Update widget size from DOM\r
+ */\r
+ childComponentContainer.updateWidgetSize();\r
+ }\r
+ }\r
+\r
private void recalculateLayout() {\r
\r
/* Calculate space for relative size components */\r
private void recalculateLayoutAndComponentSizes() {\r
recalculateLayout();\r
\r
+ if (isDynamicHeight()) {\r
+ /*\r
+ * Height is not necessarily correct anymore as the height of\r
+ * components might have changed if the width has changed.\r
+ */\r
+\r
+ /* First update relative sized components */\r
+ for (ChildComponentContainer componentContainer : widgetToComponentContainer\r
+ .values()) {\r
+ if (componentContainer\r
+ .isComponentRelativeSized(ORIENTATION_HORIZONTAL)) {\r
+ client.handleComponentRelativeSize(componentContainer\r
+ .getWidget());\r
+ }\r
+ }\r
+\r
+ /*\r
+ * Get the new widget sizes from DOM and calculate new container\r
+ * sizes\r
+ */\r
+ updateWidgetSizes();\r
+ calculateContainerSize();\r
+\r
+ /* Finally calculate new layout height */\r
+ calculateLayoutDimensions();\r
+ }\r
+\r
recalculateComponentSizesAndAlignments();\r
\r
setRootSize();\r