]> source.dussan.org Git - vaadin-framework.git/commitdiff
Make AbsoluteLayout report relative child sizes to LayoutManager
authorLeif Åstrand <leif@vaadin.com>
Tue, 3 Apr 2012 12:53:56 +0000 (15:53 +0300)
committerLeif Åstrand <leif@vaadin.com>
Tue, 3 Apr 2012 12:53:56 +0000 (15:53 +0300)
src/com/vaadin/terminal/gwt/client/ui/AbsoluteLayoutConnector.java

index f0942066f21aca43c2f37dad6e58372c40926976..e2d92d99e6f993df622bb0c7f3c1586fc315f7d0 100644 (file)
@@ -121,6 +121,11 @@ public class AbsoluteLayoutConnector extends
                             - wrapper.getElement().getOffsetTop();
                 }
                 wrapperStyle.setHeight(h, Unit.PX);
+                float percentSize = parsePercent(paintable.getState()
+                        .getHeight());
+                int effectiveHeight = Math.round(h * (percentSize / 100));
+                getLayoutManager()
+                        .reportOuterHeight(paintable, effectiveHeight);
             } else {
                 wrapperStyle.clearHeight();
             }
@@ -129,6 +134,10 @@ public class AbsoluteLayoutConnector extends
         }
     }
 
+    private static float parsePercent(String size) {
+        return Float.parseFloat(size.substring(0, size.length() - 1));
+    }
+
     public void layoutHorizontally() {
         VAbsoluteLayout layout = getWidget();
         for (ComponentConnector paintable : getChildren()) {
@@ -153,6 +162,10 @@ public class AbsoluteLayoutConnector extends
                             - wrapper.getElement().getOffsetLeft();
                 }
                 wrapperStyle.setWidth(w, Unit.PX);
+                float percentSize = parsePercent(paintable.getState()
+                        .getWidth());
+                int effectiveWidth = Math.round(w * (percentSize / 100));
+                getLayoutManager().reportOuterWidth(paintable, effectiveWidth);
             } else {
                 wrapperStyle.clearWidth();
             }