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

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

Check second down event of double tap is on shift key

This change also removes unnecessary touch point tweaks.

Bug: 3385404
Change-Id: Ic398268ec4fcfaa9eafe8a70f2d10c2cd1fdfc62
parent 6d0ff1d0
Loading
Loading
Loading
Loading
+24 −10
Original line number Diff line number Diff line
@@ -403,7 +403,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {

        GestureDetector.SimpleOnGestureListener listener =
                new GestureDetector.SimpleOnGestureListener() {
            private boolean mProcessingDoubleTapEvent = false;
            private boolean mProcessingShiftDoubleTapEvent = false;

            @Override
            public boolean onFling(MotionEvent me1, MotionEvent me2, float velocityX,
@@ -424,25 +424,39 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
            }

            @Override
            public boolean onDoubleTap(MotionEvent e) {
            public boolean onDoubleTap(MotionEvent firstDown) {
                if (ENABLE_CAPSLOCK_BY_DOUBLETAP && mKeyboard instanceof LatinKeyboard
                        && ((LatinKeyboard) mKeyboard).isAlphaKeyboard()) {
                    final int pointerIndex = e.getActionIndex();
                    final int id = e.getPointerId(pointerIndex);
                    final int pointerIndex = firstDown.getActionIndex();
                    final int id = firstDown.getPointerId(pointerIndex);
                    final PointerTracker tracker = getPointerTracker(id);
                    if (tracker.isOnShiftKey((int)e.getX(), (int)e.getY())) {
                        onDoubleTapShiftKey(tracker);
                        mProcessingDoubleTapEvent = true;
                    // If the first down event is on shift key.
                    if (tracker.isOnShiftKey((int)firstDown.getX(), (int)firstDown.getY())) {
                        mProcessingShiftDoubleTapEvent = true;
                        return true;
                    }
                }
                mProcessingDoubleTapEvent = false;
                mProcessingShiftDoubleTapEvent = false;
                return false;
            }

            @Override
            public boolean onDoubleTapEvent(MotionEvent e) {
                return mProcessingDoubleTapEvent;
            public boolean onDoubleTapEvent(MotionEvent secondTap) {
                if (mProcessingShiftDoubleTapEvent
                        && secondTap.getAction() == MotionEvent.ACTION_DOWN) {
                    final MotionEvent secondDown = secondTap;
                    final int pointerIndex = secondDown.getActionIndex();
                    final int id = secondDown.getPointerId(pointerIndex);
                    final PointerTracker tracker = getPointerTracker(id);
                    // If the second down event is also on shift key.
                    if (tracker.isOnShiftKey((int)secondDown.getX(), (int)secondDown.getY())) {
                        onDoubleTapShiftKey(tracker);
                        return true;
                    }
                    // Otherwise these events should not be handled as double tap.
                    mProcessingShiftDoubleTapEvent = false;
                }
                return mProcessingShiftDoubleTapEvent;
            }
        };

+1 −5
Original line number Diff line number Diff line
@@ -315,11 +315,7 @@ public class LatinKeyboard extends Keyboard {
        int x = pointX;
        int y = pointY;
        final int code = key.mCode;
        if (code == CODE_SHIFT || code == CODE_DELETE) {
            y -= key.mHeight / 10;
            if (code == CODE_SHIFT) x += key.mWidth / 6;
            if (code == CODE_DELETE) x -= key.mWidth / 6;
        } else if (code == CODE_SPACE) {
        if (code == CODE_SPACE) {
            y += LatinKeyboard.sSpacebarVerticalCorrection;
            if (SubtypeSwitcher.getInstance().useSpacebarLanguageSwitcher()
                    && SubtypeSwitcher.getInstance().getEnabledKeyboardLocaleCount() > 1) {