]> source.dussan.org Git - vaadin-framework.git/commitdiff
Merged "#5157 shortcut actions for function keys did not work, test case and fix...
authorArtur Signell <artur.signell@itmill.com>
Tue, 15 Jun 2010 06:07:33 +0000 (06:07 +0000)
committerArtur Signell <artur.signell@itmill.com>
Tue, 15 Jun 2010 06:07:33 +0000 (06:07 +0000)
svn changeset:13657/svn branch:6.4

src/com/vaadin/event/ShortcutAction.java
src/com/vaadin/terminal/gwt/client/ui/ShortcutActionHandler.java
tests/src/com/vaadin/tests/tickets/Ticket5157.java [new file with mode: 0644]

index 7b167420aec876f775ccffd8fc2a278e49be508b..9499997176a5bf563abd1d7e4392107f01934663 100644 (file)
@@ -175,8 +175,8 @@ public class ShortcutAction extends Action {
         if (matcher.find()) {
             String match = matcher.group();
 
-            // KeyCode from last char in match, lowercase
-            keyCode = Character.toLowerCase(matcher.group().charAt(
+            // KeyCode from last char in match, uppercase
+            keyCode = Character.toUpperCase(matcher.group().charAt(
                     match.length() - 1));
 
             // Given modifiers override this indicated in the caption
index 8f3eaade546d4bcda690e1cfd282933d7723e663..6dfcb024d5564f2475be7037722ac288c620c5b8 100644 (file)
@@ -166,7 +166,6 @@ class ShortcutKeyCombination {
 
     ShortcutKeyCombination(int kc, int[] modifiers) {
         keyCode = (char) kc;
-        keyCode = Character.toUpperCase(keyCode);
 
         modifiersMask = 0;
         if (modifiers != null) {
diff --git a/tests/src/com/vaadin/tests/tickets/Ticket5157.java b/tests/src/com/vaadin/tests/tickets/Ticket5157.java
new file mode 100644 (file)
index 0000000..e080f02
--- /dev/null
@@ -0,0 +1,52 @@
+package com.vaadin.tests.tickets;\r
+\r
+import com.vaadin.Application;\r
+import com.vaadin.event.ShortcutListener;\r
+import com.vaadin.event.ShortcutAction.KeyCode;\r
+import com.vaadin.ui.Label;\r
+import com.vaadin.ui.Panel;\r
+import com.vaadin.ui.TextField;\r
+import com.vaadin.ui.Window;\r
+\r
+/**\r
+ * Key codes were converted to lower case on the server (overlapping special key\r
+ * codes for function keys etc.) and then back to upper case on the client.\r
+ * Therefore, registering e.g. F8 as a key code resulted in "w" being used as\r
+ * the trigger and F8 being ignored.\r
+ */\r
+public class Ticket5157 extends Application {\r
+\r
+    @Override\r
+    public void init() {\r
+        final Window mainWindow = new Window("Forumtests Application");\r
+        setMainWindow(mainWindow);\r
+\r
+        Panel p = new Panel();\r
+        mainWindow.addComponent(p);\r
+\r
+        Label l = new Label("Panel with F8 bound");\r
+        p.addComponent(l);\r
+\r
+        TextField f = new TextField();\r
+        p.addComponent(f);\r
+\r
+        p.addAction(new ShortcutListener("F8", KeyCode.F8, null) {\r
+\r
+            @Override\r
+            public void handleAction(Object sender, Object target) {\r
+                mainWindow.showNotification(getCaption());\r
+\r
+            }\r
+        });\r
+\r
+        p.addAction(new ShortcutListener("a", KeyCode.A, null) {\r
+\r
+            @Override\r
+            public void handleAction(Object sender, Object target) {\r
+                mainWindow.showNotification(getCaption());\r
+\r
+            }\r
+        });\r
+    }\r
+\r
+}\r