]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix closing of modal window curtains while dragging and resizing (#8281)
authorAleksi Hietanen <aleksi@vaadin.com>
Thu, 19 Jan 2017 14:02:15 +0000 (16:02 +0200)
committerTeemu Suo-Anttila <tsuoanttila@users.noreply.github.com>
Thu, 19 Jan 2017 14:02:15 +0000 (16:02 +0200)
Fixes #7496

client/src/main/java/com/vaadin/client/ui/VWindow.java
uitest/src/test/java/com/vaadin/tests/themes/valo/ModalWindowTest.java

index da47b9381f3bfd321ce7547b1daf0b8d9adc0558..caee4239651e2c6699854f889162d0811fcfd297 100644 (file)
@@ -692,6 +692,8 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner,
 
         if (vaadinModality) {
             hideModalityCurtain();
+            hideDraggingCurtain();
+            hideResizingCurtain();
         }
         super.hide();
 
index 11b98174bad8b6f9e18db6e25b5210dd0e4db8e4..c1f4d83e5d6fc3d8ad2dda187ec03f56819afd64 100644 (file)
@@ -1,14 +1,19 @@
 package com.vaadin.tests.themes.valo;
 
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.interactions.Actions;
+
 import com.vaadin.testbench.By;
 import com.vaadin.testbench.elements.ButtonElement;
 import com.vaadin.tests.ModalWindow;
 import com.vaadin.tests.tb3.SingleBrowserTest;
-import org.junit.Test;
-import org.openqa.selenium.WebElement;
-
-import static org.hamcrest.core.Is.is;
-import static org.junit.Assert.assertThat;
 
 public class ModalWindowTest extends SingleBrowserTest {
 
@@ -30,7 +35,44 @@ public class ModalWindowTest extends SingleBrowserTest {
                 is("none"));
     }
 
+    @Test
+    public void modal_curtains_close_correctly() {
+        openTestURL();
+
+        openModalWindow();
+        new Actions(getDriver())
+                .moveToElement(findHeaderElement())
+                .clickAndHold().moveByOffset(1, 1).perform();
+        assertTrue(isElementPresent(By.className("v-window-draggingCurtain")));
+        new Actions(getDriver()).sendKeys(findHeaderElement(), Keys.ESCAPE)
+                .release().perform();
+        verifyCurtainsNotPresent();
+
+        openModalWindow();
+        new Actions(getDriver())
+                .moveToElement(findResizingElement())
+                .clickAndHold().moveByOffset(1, 1).perform();
+        assertTrue(isElementPresent(By.className("v-window-resizingCurtain")));
+        new Actions(getDriver()).sendKeys(findResizingElement(), Keys.ESCAPE)
+                .release().perform();
+        verifyCurtainsNotPresent();
+    }
+
     private void openModalWindow() {
         $(ButtonElement.class).get(1).click();
     }
-}
\ No newline at end of file
+
+    private WebElement findHeaderElement() {
+        return findElement(By.className("v-window-header"));
+    }
+
+    private WebElement findResizingElement() {
+        return findElement(By.className("v-window-resizebox"));
+    }
+
+    private void verifyCurtainsNotPresent() {
+        assertFalse(isElementPresent(By.className("v-window-modalitycurtain")));
+        assertFalse(isElementPresent(By.className("v-window-draggingCurtain")));
+        assertFalse(isElementPresent(By.className("v-window-resizingCurtain")));
+    }
+}