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.


Reply via email to