From 9700a4badb4096fb0c9cfbd03dbed55c50ded6e3 Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Wed, 9 Jun 2010 08:09:31 +0000 Subject: [PATCH] #5157 shortcut actions for function keys did not work, test case and fix svn changeset:13626/svn branch:6.3 --- src/com/vaadin/event/ShortcutAction.java | 4 +- .../gwt/client/ui/ShortcutActionHandler.java | 1 - .../com/vaadin/tests/tickets/Ticket5157.java | 52 +++++++++++++++++++ 3 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 tests/src/com/vaadin/tests/tickets/Ticket5157.java diff --git a/src/com/vaadin/event/ShortcutAction.java b/src/com/vaadin/event/ShortcutAction.java index 7b167420ae..9499997176 100644 --- a/src/com/vaadin/event/ShortcutAction.java +++ b/src/com/vaadin/event/ShortcutAction.java @@ -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 diff --git a/src/com/vaadin/terminal/gwt/client/ui/ShortcutActionHandler.java b/src/com/vaadin/terminal/gwt/client/ui/ShortcutActionHandler.java index 8f3eaade54..6dfcb024d5 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/ShortcutActionHandler.java +++ b/src/com/vaadin/terminal/gwt/client/ui/ShortcutActionHandler.java @@ -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 index 0000000000..e080f0279a --- /dev/null +++ b/tests/src/com/vaadin/tests/tickets/Ticket5157.java @@ -0,0 +1,52 @@ +package com.vaadin.tests.tickets; + +import com.vaadin.Application; +import com.vaadin.event.ShortcutListener; +import com.vaadin.event.ShortcutAction.KeyCode; +import com.vaadin.ui.Label; +import com.vaadin.ui.Panel; +import com.vaadin.ui.TextField; +import com.vaadin.ui.Window; + +/** + * Key codes were converted to lower case on the server (overlapping special key + * codes for function keys etc.) and then back to upper case on the client. + * Therefore, registering e.g. F8 as a key code resulted in "w" being used as + * the trigger and F8 being ignored. + */ +public class Ticket5157 extends Application { + + @Override + public void init() { + final Window mainWindow = new Window("Forumtests Application"); + setMainWindow(mainWindow); + + Panel p = new Panel(); + mainWindow.addComponent(p); + + Label l = new Label("Panel with F8 bound"); + p.addComponent(l); + + TextField f = new TextField(); + p.addComponent(f); + + p.addAction(new ShortcutListener("F8", KeyCode.F8, null) { + + @Override + public void handleAction(Object sender, Object target) { + mainWindow.showNotification(getCaption()); + + } + }); + + p.addAction(new ShortcutListener("a", KeyCode.A, null) { + + @Override + public void handleAction(Object sender, Object target) { + mainWindow.showNotification(getCaption()); + + } + }); + } + +} -- 2.39.5