]> source.dussan.org Git - vaadin-framework.git/commitdiff
Use the correct window height when comparing to browser window height (#19590)
authorArtur Signell <artur@vaadin.com>
Fri, 15 Apr 2016 05:59:01 +0000 (08:59 +0300)
committerVaadin Code Review <review@vaadin.com>
Thu, 28 Apr 2016 15:18:36 +0000 (15:18 +0000)
Change-Id: I7fdecab93fa6730e63e3ba7f0df3a67f3020c19c

client/src/main/java/com/vaadin/client/ui/window/WindowConnector.java
uitest/src/main/java/com/vaadin/tests/components/window/WindowMaxHeight.java [new file with mode: 0644]
uitest/src/test/java/com/vaadin/tests/components/window/WindowMaxHeightTest.java [new file with mode: 0644]

index 9ea3c8bb689a5307d9104f0823df0b0a8a72a123..8ddf099e288e681c33caa768ad48890f324132a7 100644 (file)
@@ -216,6 +216,17 @@ public class WindowConnector extends AbstractSingleComponentContainerConnector
     public void layout() {
         LayoutManager lm = getLayoutManager();
         VWindow window = getWidget();
+
+        // ensure window is not larger than browser window
+        if (window.getOffsetWidth() > Window.getClientWidth()) {
+            window.setWidth(Window.getClientWidth() + "px");
+            lm.setNeedsMeasure(getContent());
+        }
+        if (window.getOffsetHeight() > Window.getClientHeight()) {
+            window.setHeight(Window.getClientHeight() + "px");
+            lm.setNeedsMeasure(getContent());
+        }
+
         ComponentConnector content = getContent();
         boolean hasContent = (content != null);
         Element contentElement = window.contentPanel.getElement();
@@ -414,14 +425,6 @@ public class WindowConnector extends AbstractSingleComponentContainerConnector
             });
         }
         window.setVisible(true);
-
-        // ensure window is not larger than browser window
-        if (window.getOffsetWidth() > Window.getClientWidth()) {
-            window.setWidth(Window.getClientWidth() + "px");
-        }
-        if (window.getOffsetHeight() > Window.getClientHeight()) {
-            window.setHeight(Window.getClientHeight() + "px");
-        }
     }
 
     // Need to override default because of window mode
diff --git a/uitest/src/main/java/com/vaadin/tests/components/window/WindowMaxHeight.java b/uitest/src/main/java/com/vaadin/tests/components/window/WindowMaxHeight.java
new file mode 100644 (file)
index 0000000..430f99a
--- /dev/null
@@ -0,0 +1,46 @@
+package com.vaadin.tests.components.window;
+
+import com.vaadin.annotations.Theme;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+
+@SuppressWarnings("serial")
+@Theme("valo")
+public class WindowMaxHeight extends UI {
+
+    @Override
+    protected void init(VaadinRequest request) {
+        WindowNotFullHeight window = new WindowNotFullHeight();
+        addWindow(window);
+        window.focus();
+    }
+
+    class WindowNotFullHeight extends Window {
+
+        public WindowNotFullHeight() {
+            setCaption("Should be 200px high");
+            setWidth(200, Unit.PIXELS);
+
+            VerticalLayout layoutRoot = new VerticalLayout();
+
+            Panel container = new Panel();
+            container.setHeight(200, Unit.PIXELS);
+
+            VerticalLayout containerContent = new VerticalLayout();
+            for (int i = 0; i < 300; i++) {
+                Panel hello = new Panel("hello");
+                containerContent.addComponent(hello);
+            }
+
+            container.setContent(containerContent);
+            layoutRoot.addComponent(container);
+            setContent(layoutRoot);
+
+        }
+
+    }
+
+}
diff --git a/uitest/src/test/java/com/vaadin/tests/components/window/WindowMaxHeightTest.java b/uitest/src/test/java/com/vaadin/tests/components/window/WindowMaxHeightTest.java
new file mode 100644 (file)
index 0000000..dabc070
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * 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.window;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.Dimension;
+
+import com.vaadin.testbench.elements.WindowElement;
+import com.vaadin.tests.tb3.SingleBrowserTest;
+
+public class WindowMaxHeightTest extends SingleBrowserTest {
+
+    @Test
+    public void ensureWindowNotFullHeight() {
+        openTestURL();
+        WindowElement window = $(WindowElement.class).first();
+        Dimension size = window.getSize();
+        Assert.assertTrue(
+                "Window should be 200-250px high, was " + size.getHeight(),
+                size.getHeight() < 250);
+    }
+}