Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e9d9b37b authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

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
parent c1cb930d
Loading
Loading
Loading
Loading
+18 −2
Original line number Original line Diff line number Diff line
@@ -55,7 +55,22 @@ final class EmojiPageKeyboardView extends KeyboardView implements
    private OnKeyEventListener mListener = EMPTY_LISTENER;
    private OnKeyEventListener mListener = EMPTY_LISTENER;
    private final KeyDetector mKeyDetector = new KeyDetector();
    private final KeyDetector mKeyDetector = new KeyDetector();
    private final GestureDetector mGestureDetector;
    private final GestureDetector mGestureDetector;
    private KeyboardAccessibilityDelegate<EmojiPageKeyboardView> mAccessibilityDelegate;
    private EmojiPageKeyboardAccessibilityDelegate mAccessibilityDelegate;

    private static final class EmojiPageKeyboardAccessibilityDelegate
            extends KeyboardAccessibilityDelegate<EmojiPageKeyboardView> {
        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) {
    public EmojiPageKeyboardView(final Context context, final AttributeSet attrs) {
        this(context, attrs, R.attr.keyboardViewStyle);
        this(context, attrs, R.attr.keyboardViewStyle);
@@ -82,7 +97,8 @@ final class EmojiPageKeyboardView extends KeyboardView implements
        mKeyDetector.setKeyboard(keyboard, 0 /* correctionX */, 0 /* correctionY */);
        mKeyDetector.setKeyboard(keyboard, 0 /* correctionX */, 0 /* correctionY */);
        if (AccessibilityUtils.getInstance().isAccessibilityEnabled()) {
        if (AccessibilityUtils.getInstance().isAccessibilityEnabled()) {
            if (mAccessibilityDelegate == null) {
            if (mAccessibilityDelegate == null) {
                mAccessibilityDelegate = new KeyboardAccessibilityDelegate<>(this, mKeyDetector);
                mAccessibilityDelegate = new EmojiPageKeyboardAccessibilityDelegate(
                        this, mKeyDetector);
            }
            }
            mAccessibilityDelegate.setKeyboard(keyboard);
            mAccessibilityDelegate.setKeyboard(keyboard);
        } else {
        } else {
+3 −3
Original line number Original line Diff line number Diff line
@@ -263,10 +263,10 @@ public final class Constants {
        case CODE_ENTER: return "enter";
        case CODE_ENTER: return "enter";
        case CODE_SPACE: return "space";
        case CODE_SPACE: return "space";
        default:
        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 < 0x100) return String.format("%c", code);
            if (code < 0x10000) return String.format("\\u04x", code);
            if (code < 0x10000) return String.format("\\u%04X", code);
            return String.format("\\U%05x", code);
            return String.format("\\U%05X", code);
        }
        }
    }
    }