From: Leif Åstrand Date: Fri, 18 Jan 2013 13:22:34 +0000 (+0200) Subject: Reimplement zero size component checking for analyze layouts (#10792) X-Git-Tag: 7.0.0.rc2~2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=10143f405a03d7835f5158e5ce82bfa55b5b3d0e;p=vaadin-framework.git Reimplement zero size component checking for analyze layouts (#10792) Change-Id: Idcc3571fea86cc1114d7124117be738cb8a82934 --- diff --git a/client/src/com/vaadin/client/ApplicationConnection.java b/client/src/com/vaadin/client/ApplicationConnection.java index 4a3215bb21..bc260a2bbc 100644 --- a/client/src/com/vaadin/client/ApplicationConnection.java +++ b/client/src/com/vaadin/client/ApplicationConnection.java @@ -220,10 +220,6 @@ public class ApplicationConnection { private boolean validatingLayouts = false; - private Set zeroWidthComponents = null; - - private Set zeroHeightComponents = null; - private final LayoutManager layoutManager; private final RpcManager rpcManager; @@ -1408,8 +1404,6 @@ public class ApplicationConnection { getConnectorMap().clear(); if (meta.containsKey("invalidLayouts")) { validatingLayouts = true; - zeroWidthComponents = new HashSet(); - zeroHeightComponents = new HashSet(); } } if (meta.containsKey("timedRedirect")) { @@ -1540,11 +1534,13 @@ public class ApplicationConnection { applicationRunning = false; } if (validatingLayouts) { + Set zeroHeightComponents = new HashSet(); + Set zeroWidthComponents = new HashSet(); + findZeroSizeComponents(zeroHeightComponents, + zeroWidthComponents, getUIConnector()); VConsole.printLayoutProblems(meta, ApplicationConnection.this, zeroHeightComponents, zeroWidthComponents); - zeroHeightComponents = null; - zeroWidthComponents = null; validatingLayouts = false; } @@ -2201,6 +2197,28 @@ public class ApplicationConnection { ApplicationConfiguration.runWhenDependenciesLoaded(c); } + private void findZeroSizeComponents( + Set zeroHeightComponents, + Set zeroWidthComponents, + ComponentConnector connector) { + Widget widget = connector.getWidget(); + ComputedStyle computedStyle = new ComputedStyle(widget.getElement()); + if (computedStyle.getIntProperty("height") == 0) { + zeroHeightComponents.add(connector); + } + if (computedStyle.getIntProperty("width") == 0) { + zeroWidthComponents.add(connector); + } + List children = connector.getChildren(); + for (ServerConnector serverConnector : children) { + if (serverConnector instanceof ComponentConnector) { + findZeroSizeComponents(zeroHeightComponents, + zeroWidthComponents, + (ComponentConnector) serverConnector); + } + } + } + private void loadStyleDependencies(JsArrayString dependencies) { // Assuming no reason to interpret in a defined order ResourceLoadListener resourceLoadListener = new ResourceLoadListener() {