]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix the initial location of a Window (#16486).
authorMika Murtojarvi <mika@vaadin.com>
Fri, 13 Feb 2015 12:32:56 +0000 (14:32 +0200)
committerVaadin Code Review <review@vaadin.com>
Mon, 16 Feb 2015 13:29:50 +0000 (13:29 +0000)
Change-Id: Ie34384a9683376dda8b78434e0db885591964aba

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

index 5214c33eece80fb0907f7d4dff6e728a1c5def27..9b710981d85733e96a306018af86825c87e5c881 100644 (file)
@@ -405,6 +405,10 @@ public class WindowConnector extends AbstractSingleComponentContainerConnector
 
         // centered is this is unset on move/resize
         window.centered = state.centered;
+        // Ensure centering before setting visible (#16486)
+        if (window.centered && getState().windowMode != WindowMode.MAXIMIZED) {
+            window.center();
+        }
         window.setVisible(true);
 
         // ensure window is not larger than browser window
diff --git a/uitest/src/com/vaadin/tests/components/window/ModalWindowInitialLocation.java b/uitest/src/com/vaadin/tests/components/window/ModalWindowInitialLocation.java
new file mode 100644 (file)
index 0000000..3fa3730
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * 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 com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.ListSelect;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+
+public class ModalWindowInitialLocation extends AbstractTestUI {
+
+    @Override
+    protected void setup(VaadinRequest request) {
+        final Window w = new Window();
+        VerticalLayout layout = new VerticalLayout();
+        // Add lots of contents so that it is easier to see whether the
+        // window first appears in the wrong location.
+        for (int i = 0; i < 50; i++) {
+            final ListSelect listSelect = new ListSelect("Choose options");
+            listSelect.setRows(4);
+            listSelect.setWidth("100%");
+            listSelect.setImmediate(true);
+            listSelect.setMultiSelect(true);
+            listSelect.setNullSelectionAllowed(true);
+            listSelect.addItem(new String("Planning"));
+            listSelect.addItem(new String("Executing"));
+            listSelect.addItem(new String("Listing"));
+            listSelect.addItem(new String("Thinking"));
+            listSelect.addItem(new String("Sorting"));
+            listSelect.addItem(new String("Ordering"));
+            listSelect.select("Planning");
+            listSelect.select("Ordering");
+            layout.addComponent(listSelect);
+        }
+
+        w.setCaption("Person Form");
+        w.setWidth("400px");
+        w.setHeight("400px");
+        w.setContent(layout);
+
+        Button b = new Button("Open window");
+        b.addClickListener(new ClickListener() {
+            @Override
+            public void buttonClick(ClickEvent event) {
+                w.setModal(true);
+                getUI().addWindow(w);
+            }
+        });
+        addComponent(b);
+    }
+
+    @Override
+    public String getTestDescription() {
+        return "When the button is clicked, a window should appear in the center of the browser window without "
+                + "flashing first in the upper left corner.";
+    }
+
+    @Override
+    public Integer getTicketNumber() {
+        return 16486;
+    }
+}