summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeemu Suo-Anttila <teemusa@vaadin.com>2015-07-21 14:00:03 +0300
committerArtur Signell <artur@vaadin.com>2016-01-01 21:16:55 +0200
commit1cf32b74e22297201273d8b3d8c064cd1f3c3104 (patch)
treeb1765841a48a68470c18f4901565e399ac85fd0e
parentee0f7000dea86e6db3f6a0727f6e0d3d15692359 (diff)
downloadvaadin-framework-1cf32b74e22297201273d8b3d8c064cd1f3c3104.tar.gz
vaadin-framework-1cf32b74e22297201273d8b3d8c064cd1f3c3104.zip
Revert changes which were previously reverted from only 7.5 (#19424)
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
-rw-r--r--server/src/com/vaadin/server/ComponentSizeValidator.java53
-rw-r--r--uitest/src/com/vaadin/tests/components/orderedlayout/NestedInvalidLayouts.java87
-rw-r--r--uitest/src/com/vaadin/tests/components/orderedlayout/NestedInvalidLayoutsTest.java57
-rw-r--r--uitest/src/com/vaadin/tests/components/table/SelectAllConstantViewport.java2
-rw-r--r--uitest/src/com/vaadin/tests/layouts/RelativeSizeInUndefinedCssLayout.java46
-rw-r--r--uitest/src/com/vaadin/tests/layouts/RelativeSizeInUndefinedCssLayoutTest.java37
6 files changed, 88 insertions, 194 deletions
diff --git a/server/src/com/vaadin/server/ComponentSizeValidator.java b/server/src/com/vaadin/server/ComponentSizeValidator.java
index eb2aa52297..b8b06c780f 100644
--- a/server/src/com/vaadin/server/ComponentSizeValidator.java
+++ b/server/src/com/vaadin/server/ComponentSizeValidator.java
@@ -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
index 9bc8a418da..0000000000
--- a/uitest/src/com/vaadin/tests/components/orderedlayout/NestedInvalidLayouts.java
+++ /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
index cbae7acc94..0000000000
--- a/uitest/src/com/vaadin/tests/components/orderedlayout/NestedInvalidLayoutsTest.java
+++ /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);
- }
- }
-}
diff --git a/uitest/src/com/vaadin/tests/components/table/SelectAllConstantViewport.java b/uitest/src/com/vaadin/tests/components/table/SelectAllConstantViewport.java
index 3bd17c163c..5a406eac48 100644
--- a/uitest/src/com/vaadin/tests/components/table/SelectAllConstantViewport.java
+++ b/uitest/src/com/vaadin/tests/components/table/SelectAllConstantViewport.java
@@ -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
index 0000000000..a139c7f67a
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/layouts/RelativeSizeInUndefinedCssLayout.java
@@ -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
index 0000000000..340c627dd4
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/layouts/RelativeSizeInUndefinedCssLayoutTest.java
@@ -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);
+ }
+}