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

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

Merge "Fix double tap shift key to turn off capslock mode"

parents 82ddd168 7bc61ca1
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -225,12 +225,13 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
            keyboard.setAutomaticTemporaryUpperCase();
        } else {
            final boolean shifted = (shiftMode == MANUAL_SHIFT);
            // TODO: Remove duplicated logic in KeyboardState#setShifted
            // On non-distinct multi touch panel device, we should also turn off the shift locked
            // state when shift key is pressed to go to normal mode.
            // On the other hand, on distinct multi touch panel device, turning off the shift
            // locked state with shift key pressing is handled by onReleaseShift().
            if (!hasDistinctMultitouch() && !shifted && mState.isShiftLocked()) {
                keyboard.setShiftLocked(false);
                setShiftLocked(false);
            }
            keyboard.setShifted(shifted);
        }
+10 −2
Original line number Diff line number Diff line
@@ -166,21 +166,29 @@ public class KeyboardState {
        if (DEBUG_STATE) {
            Log.d(TAG, "setShifted: shiftMode=" + shiftModeToString(shiftMode));
        }
        // TODO: Remove this hack in conjunction with duplicated logic below.
        boolean needsToTurnOffShiftLockedLater = false;
        if (shiftMode == SwitchActions.AUTOMATIC_SHIFT) {
            mKeyboardShiftState.setAutomaticTemporaryUpperCase();
        } else {
            // TODO: Duplicated logic in KeyboardSwitcher#setShifted()
            // TODO: Remove duplicated logic in KeyboardSwitcher#setShifted()
            final boolean shifted = (shiftMode == SwitchActions.MANUAL_SHIFT);
            // On non-distinct multi touch panel device, we should also turn off the shift locked
            // state when shift key is pressed to go to normal mode.
            // On the other hand, on distinct multi touch panel device, turning off the shift
            // locked state with shift key pressing is handled by onReleaseShift().
            if (!mHasDistinctMultitouch && !shifted && mKeyboardShiftState.isShiftLocked()) {
                mKeyboardShiftState.setShiftLocked(false);
                // Setting shift lock state should be delayed after
                // mSwitchActions.setShifted(shiftMode) is called, because in that call the state
                // is referenced.
                needsToTurnOffShiftLockedLater = true;
            }
            mKeyboardShiftState.setShifted(shifted);
        }
        mSwitchActions.setShifted(shiftMode);
        if (needsToTurnOffShiftLockedLater) {
            mKeyboardShiftState.setShiftLocked(false);
        }
    }

    private void setShiftLocked(boolean shiftLocked) {