From e9d9b37b5a6b4841ba477e7b9358037cfaef726a Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Fri, 13 Jun 2014 13:33:19 +0900 Subject: [PATCH] Add EmojiPageKeyboardAccessibilityDelegate Because EmojiPageKeyboardView doesn't use PointerTracker to handle MotionEvent, a dedicated accessibility delegate is needed. Then the recent tab can be updated even with accessibility mode on. Bug: 15582599 Change-Id: I63d75b9aca21ec44f1f77d2eaaf2ba7813992183 --- .../keyboard/emoji/EmojiPageKeyboardView.java | 20 +++++++++++++++++-- .../android/inputmethod/latin/Constants.java | 6 +++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java index 80ba60c82..a34dbef4b 100644 --- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java @@ -55,7 +55,22 @@ final class EmojiPageKeyboardView extends KeyboardView implements private OnKeyEventListener mListener = EMPTY_LISTENER; private final KeyDetector mKeyDetector = new KeyDetector(); private final GestureDetector mGestureDetector; - private KeyboardAccessibilityDelegate mAccessibilityDelegate; + private EmojiPageKeyboardAccessibilityDelegate mAccessibilityDelegate; + + private static final class EmojiPageKeyboardAccessibilityDelegate + extends KeyboardAccessibilityDelegate { + public EmojiPageKeyboardAccessibilityDelegate(final EmojiPageKeyboardView keyboardView, + final KeyDetector keyDetector) { + super(keyboardView, keyDetector); + } + + @Override + protected void simulateTouchEvent(int touchAction, MotionEvent hoverEvent) { + final MotionEvent touchEvent = synthesizeTouchEvent(touchAction, hoverEvent); + mKeyboardView.onTouchEvent(touchEvent); + touchEvent.recycle(); + } + } public EmojiPageKeyboardView(final Context context, final AttributeSet attrs) { this(context, attrs, R.attr.keyboardViewStyle); @@ -82,7 +97,8 @@ final class EmojiPageKeyboardView extends KeyboardView implements mKeyDetector.setKeyboard(keyboard, 0 /* correctionX */, 0 /* correctionY */); if (AccessibilityUtils.getInstance().isAccessibilityEnabled()) { if (mAccessibilityDelegate == null) { - mAccessibilityDelegate = new KeyboardAccessibilityDelegate<>(this, mKeyDetector); + mAccessibilityDelegate = new EmojiPageKeyboardAccessibilityDelegate( + this, mKeyDetector); } mAccessibilityDelegate.setKeyboard(keyboard); } else { diff --git a/java/src/com/android/inputmethod/latin/Constants.java b/java/src/com/android/inputmethod/latin/Constants.java index fa51436de..f9339361a 100644 --- a/java/src/com/android/inputmethod/latin/Constants.java +++ b/java/src/com/android/inputmethod/latin/Constants.java @@ -263,10 +263,10 @@ public final class Constants { case CODE_ENTER: return "enter"; case CODE_SPACE: return "space"; default: - if (code < CODE_SPACE) return String.format("\\u%02x", code); + if (code < CODE_SPACE) return String.format("\\u%02X", code); if (code < 0x100) return String.format("%c", code); - if (code < 0x10000) return String.format("\\u04x", code); - return String.format("\\U%05x", code); + if (code < 0x10000) return String.format("\\u%04X", code); + return String.format("\\U%05X", code); } }