diff options
author | Artur Signell <artur@vaadin.com> | 2014-12-19 17:15:12 +0200 |
---|---|---|
committer | Sauli Tähkäpää <sauli@vaadin.com> | 2015-01-05 12:39:15 +0200 |
commit | da077d5c924889b477e0ac02975318de0f40e924 (patch) | |
tree | 6733b6cb4c8d4c9edb7e781815d73d720103bc2a | |
parent | 39a056aaa9be7aa18d488a49c6a0d292e7806378 (diff) | |
download | vaadin-framework-da077d5c924889b477e0ac02975318de0f40e924.tar.gz vaadin-framework-da077d5c924889b477e0ac02975318de0f40e924.zip |
Prevent key events without key code from triggering actions (#11029)
Seemingly not possible to auto-test reliably
Change-Id: Idb492465323d91279caf170646590a54847b9414
-rw-r--r-- | client/src/com/vaadin/client/ui/ShortcutActionHandler.java | 3 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/actions/ActionsWithoutKeyCode.java | 39 |
2 files changed, 42 insertions, 0 deletions
diff --git a/client/src/com/vaadin/client/ui/ShortcutActionHandler.java b/client/src/com/vaadin/client/ui/ShortcutActionHandler.java index 9e9279267d..a9d5f0731a 100644 --- a/client/src/com/vaadin/client/ui/ShortcutActionHandler.java +++ b/client/src/com/vaadin/client/ui/ShortcutActionHandler.java @@ -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 index 0000000000..e94a4b1ade --- /dev/null +++ b/uitest/src/com/vaadin/tests/actions/ActionsWithoutKeyCode.java @@ -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 |