return addHandler(handler, WindowMoveEvent.getType());
}
+ /**
+ * Checks if a modal window is currently open.
+ *
+ * @return <code>true</code> if a modal window is open, <code>false</code>
+ * otherwise.
+ */
+ public static boolean isModalWindowOpen() {
+ return Document.get().getBody()
+ .hasClassName(MODAL_WINDOW_OPEN_CLASSNAME);
+ }
+
}
shortcutContextWidget.addDomHandler(new KeyDownHandler() {
@Override
public void onKeyDown(KeyDownEvent event) {
+ if (VWindow.isModalWindowOpen()) {
+ return;
+ }
if (getWidget().actionHandler != null) {
Element target = Element
.as(event.getNativeEvent().getEventTarget());
import org.junit.Assert;
import org.junit.Test;
+import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
+import org.openqa.selenium.WebElement;
import com.vaadin.testbench.elements.ButtonElement;
import com.vaadin.testbench.elements.TextFieldElement;
Assert.assertTrue(
$(ButtonElement.class).caption("Close page").exists());
}
+
+ @Test
+ public void modalCurtainShouldNotTriggerShortcuts() {
+ openTestURL();
+ $(ButtonElement.class).caption("Show page").first().click();
+ $(ButtonElement.class).caption("Open dialog window").first().click();
+
+ WebElement curtain = findElement(
+ By.className("v-window-modalitycurtain"));
+ curtain.sendKeys(Keys.ESCAPE);
+ // "Close page" should not have been clicked
+ Assert.assertTrue(
+ $(ButtonElement.class).caption("Close page").exists());
+
+ }
}