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

Commit 6d645e13 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Display spacebar language switcher even when key preview is off"

parents 0c72ea1c e6cb8fc2
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -889,8 +889,11 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {

    @Override
    public void showKeyPreview(int keyIndex, PointerTracker tracker) {
        if (mShowKeyPreview || mKeyboard.needSpacebarPreview(keyIndex)) {
        if (mShowKeyPreview) {
            mHandler.showKeyPreview(mDelayBeforePreview, keyIndex, tracker);
        } else if (mKeyboard.needSpacebarPreview(keyIndex)) {
            // Show key preview (in this case, slide language switcher) without any delay.
            showKey(keyIndex, tracker);
        }
    }

@@ -899,6 +902,9 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
        if (mShowKeyPreview) {
            mHandler.cancelShowKeyPreview(tracker);
            mHandler.dismissKeyPreview(mDelayAfterPreview, tracker);
        } else if (mKeyboard.needSpacebarPreview(KeyDetector.NOT_A_KEY)) {
            // Dismiss key preview (in this case, slide language switcher) without any delay.
            mPreviewText.setVisibility(View.INVISIBLE);
        }
    }

+10 −7
Original line number Diff line number Diff line
@@ -392,7 +392,7 @@ public class PointerTracker {
                startLongPressTimer(keyIndex);
                showKeyPreview(keyIndex);
                setPressedKeyGraphics(keyIndex);
            } else if (!isMinorMoveBounce(x, y, keyIndex)) {
            } else if (isMajorEnoughMoveToBeOnNewKey(x, y, keyIndex)) {
                // The pointer has been slid in to the new key from the previous key, we must call
                // onRelease() first to notify that the previous key has been released, then call
                // onPress() to notify that the new key is being pressed.
@@ -430,9 +430,12 @@ public class PointerTracker {
                    }
                    return;
                }
            } else if (mKeyboard.needSpacebarPreview(keyIndex)) {
                // Display spacebar slide language switcher.
                showKeyPreview(keyIndex);
            }
        } else {
            if (oldKey != null && !isMinorMoveBounce(x, y, keyIndex)) {
            if (oldKey != null && isMajorEnoughMoveToBeOnNewKey(x, y, keyIndex)) {
                // The pointer has been slid out from the previous key, we must call onRelease() to
                // notify that the previous key has been released.
                setReleasedKeyGraphics(oldKeyIndex);
@@ -483,7 +486,7 @@ public class PointerTracker {
        mIsInSlidingKeyInput = false;
        final PointerTrackerKeyState keyState = mKeyState;
        final int keyX, keyY;
        if (!isMinorMoveBounce(x, y, keyState.onMoveKey(x, y))) {
        if (isMajorEnoughMoveToBeOnNewKey(x, y, keyState.onMoveKey(x, y))) {
            keyX = x;
            keyY = y;
        } else {
@@ -544,16 +547,16 @@ public class PointerTracker {
        return mKeyState.getDownTime();
    }

    private boolean isMinorMoveBounce(int x, int y, int newKey) {
    private boolean isMajorEnoughMoveToBeOnNewKey(int x, int y, int newKey) {
        if (mKeys == null || mKeyHysteresisDistanceSquared < 0)
            throw new IllegalStateException("keyboard and/or hysteresis not set");
        int curKey = mKeyState.getKeyIndex();
        if (newKey == curKey) {
            return true;
            return false;
        } else if (isValidKeyIndex(curKey)) {
            return mKeys.get(curKey).squaredDistanceToEdge(x, y) < mKeyHysteresisDistanceSquared;
            return mKeys.get(curKey).squaredDistanceToEdge(x, y) >= mKeyHysteresisDistanceSquared;
        } else {
            return false;
            return true;
        }
    }