} else if (childConnector instanceof DirectionalManagedLayout) {
((DirectionalManagedLayout) childConnector).layoutHorizontally();
((DirectionalManagedLayout) childConnector).layoutVertically();
+ } else {
+ getLayoutManager().setNeedsMeasureRecursively(childConnector);
}
}
--- /dev/null
+package com.vaadin.tests.components.composite;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Composite;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.VerticalLayout;
+
+public class CompositeVerticalLayoutGridResize extends AbstractTestUI {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ addComponent(new CompositeGrid());
+
+ getLayout().setSizeFull();
+ getLayout().getParent().setSizeFull();
+ }
+
+ public class CompositeGrid extends Composite {
+ public CompositeGrid() {
+ VerticalLayout root = new VerticalLayout();
+ root.setId("root");
+ root.setMargin(false);
+ root.addComponentsAndExpand(buildGrid());
+
+ setCompositionRoot(root);
+ setSizeFull();
+ }
+
+ private Component buildGrid() {
+ List<Person> persons = new ArrayList<>();
+ for (int i = 0; i < 100; i++) {
+ persons.add(new Person("Firstname" + i, "Lastname" + i));
+ }
+
+ Grid<Person> grid = new Grid<Person>(Person.class);
+ grid.setItems(persons);
+ grid.setSizeFull();
+ return grid;
+ }
+ }
+
+ public class Person {
+ private String firstName, lastName;
+
+ public Person(String firstName, String lastName) {
+ this.firstName = firstName;
+ this.lastName = lastName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "Composite contents should resize without a delay when the"
+ + " browser is resized, not only when interacted with.";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 12153;
+ }
+}
--- /dev/null
+package com.vaadin.tests.components.composite;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Composite;
+import com.vaadin.ui.HorizontalSplitPanel;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.VerticalSplitPanel;
+
+public class CompositeVerticalLayoutSplitPanelResize extends AbstractTestUI {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ addComponent(new CompositeVSP());
+
+ getLayout().setSizeFull();
+ getLayout().getParent().setSizeFull();
+ }
+
+ public class CompositeVSP extends Composite {
+ public CompositeVSP() {
+ VerticalSplitPanel verticalSplitPanel = new VerticalSplitPanel();
+ verticalSplitPanel.setSecondComponent(new CompositeHSP());
+
+ VerticalLayout root = new VerticalLayout();
+ root.setId("root");
+ root.setMargin(false);
+ root.addComponent(verticalSplitPanel);
+
+ setCompositionRoot(root);
+ setSizeFull();
+ }
+ }
+
+ public class CompositeHSP extends Composite {
+ public CompositeHSP() {
+ HorizontalSplitPanel horizontalSplitPanel = new HorizontalSplitPanel();
+
+ VerticalLayout root = new VerticalLayout();
+ root.setSizeFull();
+ root.setMargin(false);
+ root.addComponent(horizontalSplitPanel);
+
+ setCompositionRoot(root);
+ setSizeFull();
+ }
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "Composite contents should resize without a delay when the"
+ + " browser is resized, not only when interacted with.";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 12153;
+ }
+}
--- /dev/null
+package com.vaadin.tests.components.composite;
+
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.Dimension;
+import org.openqa.selenium.WebElement;
+
+import com.vaadin.testbench.elements.GridElement;
+import com.vaadin.testbench.elements.GridElement.GridCellElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class CompositeVerticalLayoutGridResizeTest extends MultiBrowserTest {
+
+ @Test
+ public void testResize() {
+ getDriver().manage().window().setSize(new Dimension(600, 400));
+ openTestURL();
+
+ WebElement root = findElement(By.id("root"));
+ Dimension oldRootSize = root.getSize();
+
+ GridElement grid = $(GridElement.class).first();
+ // inner level element that is expected to resize
+ GridCellElement content = grid.getHeaderCell(0, 0);
+ Dimension oldContentSize = content.getSize();
+
+ // resize
+ getDriver().manage().window().setSize(new Dimension(500, 500));
+ waitUntilLoadingIndicatorNotVisible();
+
+ Dimension newRootSize = root.getSize();
+ Dimension newContentSize = content.getSize();
+
+ assertGreater("Unexpected vertical root size.", newRootSize.getHeight(),
+ oldRootSize.getHeight());
+ assertGreater("Unexpected horizontal root size.",
+ oldRootSize.getWidth(), newRootSize.getWidth());
+
+ // header height is not expected to change, only test width
+ assertGreater("Unexpected horizontal content size.",
+ oldContentSize.getWidth(), newContentSize.getWidth());
+ }
+}
--- /dev/null
+package com.vaadin.tests.components.composite;
+
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.Dimension;
+import org.openqa.selenium.WebElement;
+
+import com.vaadin.testbench.elements.HorizontalSplitPanelElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class CompositeVerticalLayoutSplitPanelResizeTest
+ extends MultiBrowserTest {
+
+ @Test
+ public void testResize() {
+ getDriver().manage().window().setSize(new Dimension(600, 400));
+ openTestURL();
+
+ WebElement root = findElement(By.id("root"));
+ Dimension oldRootSize = root.getSize();
+
+ // inner level element that is expected to resize
+ HorizontalSplitPanelElement content = $(
+ HorizontalSplitPanelElement.class).first();
+ Dimension oldContentSize = content.getSize();
+
+ // resize
+ getDriver().manage().window().setSize(new Dimension(500, 500));
+ waitUntilLoadingIndicatorNotVisible();
+
+ Dimension newRootSize = root.getSize();
+ Dimension newContentSize = content.getSize();
+
+ assertGreater("Unexpected vertical root size.", newRootSize.getHeight(),
+ oldRootSize.getHeight());
+ assertGreater("Unexpected horizontal root size.",
+ oldRootSize.getWidth(), newRootSize.getWidth());
+
+ assertGreater("Unexpected vertical content size.",
+ newContentSize.getHeight(), oldContentSize.getHeight());
+ assertGreater("Unexpected horizontal content size.",
+ oldContentSize.getWidth(), newContentSize.getWidth());
+ }
+}