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 <danku...@google.com>

--
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 google-web-toolkit-contributors+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to