aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/src/com/vaadin/client/LayoutManager.java40
1 files changed, 36 insertions, 4 deletions
diff --git a/client/src/com/vaadin/client/LayoutManager.java b/client/src/com/vaadin/client/LayoutManager.java
index 14b155c92f..1f9884de67 100644
--- a/client/src/com/vaadin/client/LayoutManager.java
+++ b/client/src/com/vaadin/client/LayoutManager.java
@@ -1437,10 +1437,15 @@ public class LayoutManager {
/**
* Informs this LayoutManager that the size of a component might have
- * changed. If there is no upcoming layout phase, a new layout phase is
- * scheduled. This method should be used whenever a size might have changed
- * from outside of Vaadin's normal update phase, e.g. when an icon has been
- * loaded or when the user resizes some part of the UI using the mouse.
+ * changed. This method should be used whenever the size of an individual
+ * component might have changed from outside of Vaadin's normal update
+ * phase, e.g. when an icon has been loaded or when the user resizes some
+ * part of the UI using the mouse.
+ * <p>
+ * To set an entire component hierarchy to be measured, use
+ * {@link #setNeedsMeasureRecursively(ComponentConnector)} instead.
+ * <p>
+ * If there is no upcoming layout phase, a new layout phase is scheduled.
*
* @param component
* the component whose size might have changed.
@@ -1454,6 +1459,33 @@ public class LayoutManager {
}
}
+ /**
+ * Informs this LayoutManager that some sizes in a component hierarchy might
+ * have changed. This method should be used whenever the size of any child
+ * component might have changed from outside of Vaadin's normal update
+ * phase, e.g. when a CSS class name related to sizing has been changed.
+ * <p>
+ * To set a single component to be measured, use
+ * {@link #setNeedsMeasure(ComponentConnector)} instead.
+ * <p>
+ * If there is no upcoming layout phase, a new layout phase is scheduled.
+ *
+ * @since 7.2
+ * @param component
+ * the component at the root of the component hierarchy to
+ * measure
+ */
+ public void setNeedsMeasureRecursively(ComponentConnector component) {
+ setNeedsMeasure(component);
+
+ if (component instanceof HasComponentsConnector) {
+ HasComponentsConnector hasComponents = (HasComponentsConnector) component;
+ for (ComponentConnector child : hasComponents.getChildComponents()) {
+ setNeedsMeasureRecursively(child);
+ }
+ }
+ }
+
public void setEverythingNeedsMeasure() {
everythingNeedsMeasure = true;
}