Browse Source

#5157 shortcut actions for function keys did not work, test case and fix

svn changeset:13626/svn branch:6.3
tags/6.7.0.beta1
Henri Sara 14 years ago
parent
commit
9700a4badb

+ 2
- 2
src/com/vaadin/event/ShortcutAction.java View 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

+ 0
- 1
src/com/vaadin/terminal/gwt/client/ui/ShortcutActionHandler.java View File

@@ -166,7 +166,6 @@ class ShortcutKeyCombination {

ShortcutKeyCombination(int kc, int[] modifiers) {
keyCode = (char) kc;
keyCode = Character.toUpperCase(keyCode);

modifiersMask = 0;
if (modifiers != null) {

+ 52
- 0
tests/src/com/vaadin/tests/tickets/Ticket5157.java View File

@@ -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());
}
});
}
}

Loading…
Cancel
Save