]> source.dussan.org Git - vaadin-framework.git/commitdiff
Revert changes which were previously reverted from only 7.5 (#19424)
authorTeemu Suo-Anttila <teemusa@vaadin.com>
Tue, 21 Jul 2015 11:00:03 +0000 (14:00 +0300)
committerArtur Signell <artur@vaadin.com>
Fri, 1 Jan 2016 19:16:55 +0000 (21:16 +0200)
Revert "Take Window special case into account for invalid layouts (#17598)"

This reverts commit abc1c5dff6438d65e53473b69ae9a3ca2b8e60e1.

Revert "Render nested invalid layouts correctly (#17598)"

This reverts commit ac4e85f4e35a57d1ba6e6f3448744cbb0c2df60f.

Added test to ensure a similar problem is not reintroduced later

Change-Id: I892896e953637d793d0c0a788f28f3b61494d441

server/src/com/vaadin/server/ComponentSizeValidator.java
uitest/src/com/vaadin/tests/components/orderedlayout/NestedInvalidLayouts.java [deleted file]
uitest/src/com/vaadin/tests/components/orderedlayout/NestedInvalidLayoutsTest.java [deleted file]
uitest/src/com/vaadin/tests/components/table/SelectAllConstantViewport.java
uitest/src/com/vaadin/tests/layouts/RelativeSizeInUndefinedCssLayout.java [new file with mode: 0644]
uitest/src/com/vaadin/tests/layouts/RelativeSizeInUndefinedCssLayoutTest.java [new file with mode: 0644]

index eb2aa522970e409b6d1ba1e2c78dcc2bde8e9909..b8b06c780f7706ea3bcf838f1128eac4fcf35441 100644 (file)
@@ -415,7 +415,7 @@ public class ComponentSizeValidator implements Serializable {
             // main window, valid situation
             return true;
         }
-        if (isEffectiveUndefinedHeight(component)) {
+        if (parent.getHeight() < 0) {
             // Undefined height
             if (parent instanceof Window) {
                 // Sub window with undefined size has a min-height
@@ -513,7 +513,10 @@ public class ComponentSizeValidator implements Serializable {
             // Sub window with undefined size has a min-width
             return true;
         }
-        if (isEffectiveUndefinedWidth(parent)) {
+
+        if (parent.getWidth() < 0) {
+            // Undefined width
+
             if (parent instanceof AbstractOrderedLayout) {
                 AbstractOrderedLayout ol = (AbstractOrderedLayout) parent;
                 boolean horizontal = true;
@@ -588,52 +591,6 @@ public class ComponentSizeValidator implements Serializable {
 
     }
 
-    /**
-     * Checks if this component will be rendered with undefined width, either
-     * because it has been set to undefined wide or because the parent forces it
-     * to be (100% inside undefined)
-     * 
-     */
-    private static boolean isEffectiveUndefinedWidth(Component parent) {
-        if (parent == null) {
-            return false;
-        } else if (parent.getWidth() < 0) {
-            if (parent instanceof Window) {
-                // Window has some weird haxxors to support 100% children when
-                // window is -1
-                return false;
-            }
-
-            return true;
-        } else if (parent.getWidthUnits() == Unit.PERCENTAGE) {
-            return isEffectiveUndefinedWidth(parent.getParent());
-        }
-        return false;
-    }
-
-    /**
-     * Checks if this component will be rendered with undefined Height, either
-     * because it has been set to undefined wide or because the parent forces it
-     * to be (100% inside undefined)
-     * 
-     */
-    private static boolean isEffectiveUndefinedHeight(Component parent) {
-        if (parent == null) {
-            return false;
-        } else if (parent.getHeight() < 0) {
-            if (parent instanceof Window) {
-                // Window has some weird haxxors to support 100% children when
-                // window is -1
-                return false;
-            }
-
-            return true;
-        } else if (parent.getHeightUnits() == Unit.PERCENTAGE) {
-            return isEffectiveUndefinedHeight(parent.getParent());
-        }
-        return false;
-    }
-
     private static boolean hasNonRelativeWidthComponent(Form form) {
         Layout layout = form.getLayout();
         Layout footer = form.getFooter();
diff --git a/uitest/src/com/vaadin/tests/components/orderedlayout/NestedInvalidLayouts.java b/uitest/src/com/vaadin/tests/components/orderedlayout/NestedInvalidLayouts.java
deleted file mode 100644 (file)
index 9bc8a41..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2000-2014 Vaadin Ltd.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.vaadin.tests.components.orderedlayout;
-
-import com.vaadin.server.VaadinRequest;
-import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.NativeButton;
-import com.vaadin.ui.VerticalLayout;
-
-/**
- * 
- * @since
- * @author Vaadin Ltd
- */
-public class NestedInvalidLayouts extends AbstractTestUI {
-    @Override
-    protected void setup(VaadinRequest request) {
-        fullWidthTest(getLayout(), null);
-        fullWidthTest(getLayout(), "100%");
-        fullHeightTest(getLayout(), null);
-        fullHeightTest(getLayout(), "100%");
-    }
-
-    private void fullWidthTest(VerticalLayout layout, String rootWidth) {
-        // Contains
-        // HL (-1)
-        // * VL (100%)
-        // ** Button (-1) (wide)
-        // ** Button (100%)
-
-        // This should be rendered just as if VL width was -1 (which it will
-        // become when sending width to client), i.e. both buttons should be
-        // equally wide
-
-        final VerticalLayout l = new VerticalLayout();
-        l.setWidth(rootWidth);
-        final Button c = new Button("blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
-        c.setWidth(null);
-        l.addComponent(c);
-        final Button b = new Button("c");
-        b.setWidth("100%");
-        l.addComponent(b);
-        layout.addComponent(new HorizontalLayout(l));
-    }
-
-    private void fullHeightTest(VerticalLayout layout, String rootHeight) {
-        // Contains (height)
-        // VL (-1)
-        // * HL (100%)
-        // ** Button (200px) (high)
-        // ** Button (100%)
-
-        // This should be rendered just as if HL height was -1 (which it will
-        // become when sending height to client), i.e. both buttons should be
-        // equally high
-
-        final HorizontalLayout l = new HorizontalLayout();
-        l.setHeight(rootHeight);
-
-        final NativeButton c = new NativeButton("hiiiigh");
-        c.setWidth(null);
-        c.setHeight("200px");
-        l.addComponent(c);
-        final NativeButton b = new NativeButton("c");
-        b.setHeight("100%");
-        l.addComponent(b);
-        VerticalLayout vl = new VerticalLayout(l);
-        vl.setHeight("100%");
-        layout.addComponent(vl);
-    }
-
-}
diff --git a/uitest/src/com/vaadin/tests/components/orderedlayout/NestedInvalidLayoutsTest.java b/uitest/src/com/vaadin/tests/components/orderedlayout/NestedInvalidLayoutsTest.java
deleted file mode 100644 (file)
index cbae7ac..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2000-2014 Vaadin Ltd.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.vaadin.tests.components.orderedlayout;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import com.vaadin.testbench.elements.ButtonElement;
-import com.vaadin.testbench.elements.NativeButtonElement;
-import com.vaadin.tests.tb3.SingleBrowserTest;
-
-public class NestedInvalidLayoutsTest extends SingleBrowserTest {
-
-    @Test
-    public void ensureCorrectSizes() {
-        openTestURL();
-
-        // All Button components should have equal width
-        List<Integer> widths = new ArrayList<Integer>();
-        List<ButtonElement> all = $(ButtonElement.class).state(
-                "primaryStyleName", "v-button").all();
-        for (ButtonElement button : all) {
-            widths.add(button.getSize().getWidth());
-        }
-        assertAllEqual(widths);
-
-        // All NativeButton components should have equal height
-        List<Integer> heights = new ArrayList<Integer>();
-        for (NativeButtonElement button : $(NativeButtonElement.class).all()) {
-            heights.add(button.getSize().getHeight());
-        }
-        assertAllEqual(heights);
-    }
-
-    private void assertAllEqual(List<Integer> values) {
-        Integer first = values.get(0);
-        for (Integer w : values) {
-            Assert.assertEquals(first, w);
-        }
-    }
-}
index 3bd17c163c3264895091c132368977b52121352c..5a406eac489ac1b4b7196cc4b29503acd4d97afe 100644 (file)
@@ -72,8 +72,6 @@ public class SelectAllConstantViewport extends AbstractTestUIWithLog {
         layout.addComponent(table);
         layout.setSizeFull();
         addComponent(layout);
-        getContent().setSizeFull();
-        getLayout().setSizeFull();
     }
 
     /*
diff --git a/uitest/src/com/vaadin/tests/layouts/RelativeSizeInUndefinedCssLayout.java b/uitest/src/com/vaadin/tests/layouts/RelativeSizeInUndefinedCssLayout.java
new file mode 100644 (file)
index 0000000..a139c7f
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.layouts;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.FormLayout;
+import com.vaadin.ui.TextField;
+
+public class RelativeSizeInUndefinedCssLayout extends AbstractTestUI {
+
+    @Override
+    protected void setup(VaadinRequest request) {
+        getPage().getStyles().add(".css-style { width: 520px; }");
+
+        CssLayout cssLayout = new CssLayout();
+        cssLayout.addStyleName("css-style");
+
+        setContent(cssLayout);
+
+        FormLayout formLayout = new FormLayout();
+        formLayout.setSizeFull();
+
+        cssLayout.addComponent(formLayout);
+
+        TextField tf = new TextField("Enter something");
+        tf.setWidth("100%");
+        formLayout.addComponent(tf);
+
+    }
+
+}
diff --git a/uitest/src/com/vaadin/tests/layouts/RelativeSizeInUndefinedCssLayoutTest.java b/uitest/src/com/vaadin/tests/layouts/RelativeSizeInUndefinedCssLayoutTest.java
new file mode 100644 (file)
index 0000000..340c627
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.layouts;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.vaadin.testbench.elements.FormLayoutElement;
+import com.vaadin.testbench.elements.TextFieldElement;
+import com.vaadin.tests.tb3.SingleBrowserTestPhantomJS2;
+
+public class RelativeSizeInUndefinedCssLayoutTest extends
+        SingleBrowserTestPhantomJS2 {
+
+    @Test
+    public void relativeSizeInUndefinedCssLayout() {
+        openTestURL();
+        int w = $(FormLayoutElement.class).first().getSize().getWidth();
+        Assert.assertEquals(w, 520);
+
+        int w2 = $(TextFieldElement.class).first().getSize().getWidth();
+        Assert.assertTrue(w2 > 400);
+    }
+}