]> source.dussan.org Git - vaadin-framework.git/commitdiff
Close only combobox on escape, not the window (#12163)
authorHenri Sara <hesara@vaadin.com>
Wed, 3 Jul 2013 13:33:50 +0000 (16:33 +0300)
committerHenri Sara <hesara@vaadin.com>
Wed, 3 Jul 2013 13:33:50 +0000 (16:33 +0300)
Change-Id: I356e115b5cd96ba0a598178a15215654f2fd16bb

client/src/com/vaadin/client/ui/VFilterSelect.java
uitest/src/com/vaadin/tests/components/combobox/EscapeClosesComboboxNotWindow.java [new file with mode: 0644]

index e08fbf8ab6cb8ec2adbfd163cffcfa65d6de8269..a5c1e566cae5121325125c273d9e5af78f29f152 100644 (file)
@@ -1537,6 +1537,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler,
             break;
         case KeyCodes.KEY_ESCAPE:
             reset();
+            DOM.eventPreventDefault(DOM.eventGetCurrentEvent());
             event.stopPropagation();
             break;
         case KeyCodes.KEY_ENTER:
diff --git a/uitest/src/com/vaadin/tests/components/combobox/EscapeClosesComboboxNotWindow.java b/uitest/src/com/vaadin/tests/components/combobox/EscapeClosesComboboxNotWindow.java
new file mode 100644 (file)
index 0000000..dcd19f6
--- /dev/null
@@ -0,0 +1,43 @@
+package com.vaadin.tests.components.combobox;
+
+import com.vaadin.event.ShortcutAction.KeyCode;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.ComboBox;
+import com.vaadin.ui.FormLayout;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+
+/**
+ * Ticket #12163: when a combo box popup is open in a subwindow, escape should
+ * only close it and not the window, also on Safari 6.
+ */
+public class EscapeClosesComboboxNotWindow extends UI {
+    final Window window = new Window("Window");
+
+    @Override
+    protected void init(VaadinRequest request) {
+        final VerticalLayout layout = new VerticalLayout();
+        layout.setMargin(true);
+        setContent(layout);
+
+        Button button = new Button("Click Me");
+        button.addClickListener(new Button.ClickListener() {
+            @Override
+            public void buttonClick(ClickEvent event) {
+                final FormLayout content = new FormLayout();
+                ComboBox cb = new ComboBox();
+                cb.addItem("foo");
+                cb.addItem("bar");
+                content.addComponent(cb);
+                window.setContent(content);
+                window.setCloseShortcut(KeyCode.ESCAPE);
+                UI.getCurrent().addWindow(window);
+            }
+        });
+        layout.addComponent(button);
+    }
+
+}
\ No newline at end of file