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

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

Fix sliding shift input in caps lock mode

Bug: 5881820
Change-Id: I4cbe3eda83c09edc9da8efbdff7d3359c1e140d5
parent 747ed9e9
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -383,12 +383,16 @@ public class KeyboardState {
        if (mIsAlphabetMode) {
            final boolean isShiftLocked = mAlphabetShiftState.isShiftLocked();
            if (mShiftKeyState.isMomentary()) {
                // After chording input while normal state.
                if (mAlphabetShiftState.isShiftLockShifted()) {
                    // After chording input while caps lock state.
                    setShiftLocked(true);
                } else {
                    // After chording input while normal state.
                    setShifted(UNSHIFT);
                }
            } else if (mAlphabetShiftState.isShiftLockShifted() && withSliding) {
                // In caps lock state, shift has been pressed and slid out to other key.
                setShiftLocked(true);
            } else if (isShiftLocked && !mAlphabetShiftState.isShiftLockShifted()
                    && (mShiftKeyState.isPressing() || mShiftKeyState.isPressingOnShifted())
                    && !withSliding) {
+2 −5
Original line number Diff line number Diff line
@@ -375,12 +375,9 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {

        // Alphabet shift locked -> "?123" key + letter -> alphabet shift locked.
        // Press and slide from shift key, enter alphabet shifted.
        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
        // Enter/release letter key, switch back to shift locked.
        // TODO: This test fails due to bug, though the external behavior is correct.
//        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
        // TODO: Replace this with the above line once the bug fixed.
        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
        pressAndReleaseKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
    }

    // Sliding input in symbols.