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

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

Display spacebar language switcher even when key preview is off

Bug: 4313884
Change-Id: I9d4a474302dadbfc610324799f8768b803705e52
parent 5454ff5a
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;
        }
    }