Daniel Kurka has uploaded a new change for review.
https://gwt-review.googlesource.com/3662
Change subject: Move arrow key functions from Tree to KeyCodes
......................................................................
Move arrow key functions from Tree to KeyCodes
remove handling for old Webkit keycodes (version < 525)
as well.
fixes issue 8247
Change-Id: I811520d330c181958dd67cbfbe30c46becebbe43
---
M user/src/com/google/gwt/event/dom/client/KeyCodes.java
M user/src/com/google/gwt/user/client/ui/Tree.java
2 files changed, 35 insertions(+), 52 deletions(-)
diff --git a/user/src/com/google/gwt/event/dom/client/KeyCodes.java
b/user/src/com/google/gwt/event/dom/client/KeyCodes.java
index 699510e..f05d9a0 100644
--- a/user/src/com/google/gwt/event/dom/client/KeyCodes.java
+++ b/user/src/com/google/gwt/event/dom/client/KeyCodes.java
@@ -16,6 +16,8 @@
package com.google.gwt.event.dom.client;
+import com.google.gwt.i18n.client.LocaleInfo;
+
/**
* Contains the native key codes previously defined in
* {@link com.google.gwt.user.client.ui.KeyboardListener}. When converting
@@ -436,6 +438,37 @@
*/
public static final int KEY_WIN_IME = 229;
+ /**
+ * Determines if a key code is an arrow key.
+ * @param code the keycode to check
+ * @return true if the keycode matches an arrow key
+ */
+ public static boolean isArrowKey(int code) {
+ switch (code) {
+ case KeyCodes.KEY_DOWN:
+ case KeyCodes.KEY_RIGHT:
+ case KeyCodes.KEY_UP:
+ case KeyCodes.KEY_LEFT:
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ /**
+ * Update arrow keys for left and right based on current locale.
+ */
+ public static int maybeSwapArrowKeysbasedOnLocale(int code) {
+ if (LocaleInfo.getCurrentLocale().isRTL()) {
+ if (code == KeyCodes.KEY_RIGHT) {
+ code = KeyCodes.KEY_LEFT;
+ } else if (code == KeyCodes.KEY_LEFT) {
+ code = KeyCodes.KEY_RIGHT;
+ }
+ }
+ return code;
+ }
+
// This class should never be instantiated
private KeyCodes() {
}
diff --git a/user/src/com/google/gwt/user/client/ui/Tree.java
b/user/src/com/google/gwt/user/client/ui/Tree.java
index 5d062a5..a159e63 100644
--- a/user/src/com/google/gwt/user/client/ui/Tree.java
+++ b/user/src/com/google/gwt/user/client/ui/Tree.java
@@ -164,11 +164,6 @@
}
}
- private static final int OTHER_KEY_DOWN = 63233;
- private static final int OTHER_KEY_LEFT = 63234;
- private static final int OTHER_KEY_RIGHT = 63235;
- private static final int OTHER_KEY_UP = 63232;
-
static native boolean shouldTreeDelegateFocusToElement(Element elem) /*-{
var name = elem.nodeName;
return ((name == "SELECT") ||
@@ -178,51 +173,6 @@
(name == "BUTTON") ||
(name == "LABEL"));
}-*/;
-
- private static boolean isArrowKey(int code) {
- switch (code) {
- case OTHER_KEY_DOWN:
- case OTHER_KEY_RIGHT:
- case OTHER_KEY_UP:
- case OTHER_KEY_LEFT:
- case KeyCodes.KEY_DOWN:
- case KeyCodes.KEY_RIGHT:
- case KeyCodes.KEY_UP:
- case KeyCodes.KEY_LEFT:
- return true;
- default:
- return false;
- }
- }
-
- /**
- * Normalized key codes. Also switches KEY_RIGHT and KEY_LEFT in RTL
- * languages.
- */
- private static int standardizeKeycode(int code) {
- switch (code) {
- case OTHER_KEY_DOWN:
- code = KeyCodes.KEY_DOWN;
- break;
- case OTHER_KEY_RIGHT:
- code = KeyCodes.KEY_RIGHT;
- break;
- case OTHER_KEY_UP:
- code = KeyCodes.KEY_UP;
- break;
- case OTHER_KEY_LEFT:
- code = KeyCodes.KEY_LEFT;
- break;
- }
- if (LocaleInfo.getCurrentLocale().isRTL()) {
- if (code == KeyCodes.KEY_RIGHT) {
- code = KeyCodes.KEY_LEFT;
- } else if (code == KeyCodes.KEY_LEFT) {
- code = KeyCodes.KEY_RIGHT;
- }
- }
- return code;
- }
/**
* Map of TreeItem.widget -> TreeItem.
@@ -734,7 +684,7 @@
switch (eventType) {
case Event.ONKEYDOWN:
case Event.ONKEYUP: {
- if (isArrowKey(DOM.eventGetKeyCode(event))) {
+ if (KeyCodes.isArrowKey(DOM.eventGetKeyCode(event))) {
DOM.eventCancelBubble(event, true);
DOM.eventPreventDefault(event);
return;
@@ -1178,7 +1128,7 @@
if (isKeyboardNavigationEnabled(curSelection)) {
int code = DOM.eventGetKeyCode(event);
- switch (standardizeKeycode(code)) {
+ switch (KeyCodes.maybeSwapArrowKeysbasedOnLocale(code)) {
case KeyCodes.KEY_UP: {
moveSelectionUp(curSelection);
break;
--
To view, visit https://gwt-review.googlesource.com/3662
To unsubscribe, visit https://gwt-review.googlesource.com/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I811520d330c181958dd67cbfbe30c46becebbe43
Gerrit-PatchSet: 1
Gerrit-Project: gwt
Gerrit-Branch: master
Gerrit-Owner: Daniel Kurka <[email protected]>
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors
---
You received this message because you are subscribed to the Google Groups "GWT Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.