]> source.dussan.org Git - vaadin-framework.git/commitdiff
Prevent key events without key code from triggering actions (#11029)
authorArtur Signell <artur@vaadin.com>
Fri, 19 Dec 2014 15:15:12 +0000 (17:15 +0200)
committerVaadin Code Review <review@vaadin.com>
Mon, 29 Dec 2014 11:09:17 +0000 (11:09 +0000)
Seemingly not possible to auto-test reliably

Change-Id: Idb492465323d91279caf170646590a54847b9414

client/src/com/vaadin/client/ui/ShortcutActionHandler.java
uitest/src/com/vaadin/tests/actions/ActionsWithoutKeyCode.java [new file with mode: 0644]

index 9e9279267db2ef8d2c3df652684832436e5f56d5..a9d5f0731a3d257c591b854bca5e865002d15d07 100644 (file)
@@ -123,6 +123,9 @@ public class ShortcutActionHandler {
         final int modifiers = KeyboardListenerCollection
                 .getKeyboardModifiers(event);
         final char keyCode = (char) DOM.eventGetKeyCode(event);
+        if (keyCode == 0) {
+            return;
+        }
         final ShortcutKeyCombination kc = new ShortcutKeyCombination(keyCode,
                 modifiers);
         final Iterator<ShortcutAction> it = actions.iterator();
diff --git a/uitest/src/com/vaadin/tests/actions/ActionsWithoutKeyCode.java b/uitest/src/com/vaadin/tests/actions/ActionsWithoutKeyCode.java
new file mode 100644 (file)
index 0000000..e94a4b1
--- /dev/null
@@ -0,0 +1,39 @@
+package com.vaadin.tests.actions;
+
+import com.vaadin.event.Action;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUIWithLog;
+import com.vaadin.ui.TextField;
+
+@SuppressWarnings("serial")
+public class ActionsWithoutKeyCode extends AbstractTestUIWithLog {
+
+    @Override
+    protected void setup(VaadinRequest request) {
+        TextField tf = new TextField();
+        tf.setWidth("100%");
+        tf.setInputPrompt("Enter text with å,ä or ä or press windows key while textfield is focused");
+        addComponent(tf);
+
+        addActionHandler(new Action.Handler() {
+
+            private Action[] actions;
+            {
+                actions = new Action[] { new Action("test1") };
+            }
+
+            @Override
+            public Action[] getActions(Object target, Object sender) {
+                return actions;
+            }
+
+            @Override
+            public void handleAction(Action action, Object sender, Object target) {
+                log("action " + action.getCaption() + " triggered by "
+                        + sender.getClass().getSimpleName() + " on "
+                        + target.getClass().getSimpleName());
+            }
+        });
+    }
+
+}
\ No newline at end of file