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

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

Merge "Remove duplicate logic from KeyboardSwitcher and KeyboardState"

parents a8ba49c2 58e782a2
Loading
Loading
Loading
Loading
+9 −12
Original line number Diff line number Diff line
@@ -221,19 +221,16 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
        Keyboard keyboard = getKeyboard();
        if (keyboard == null)
            return;
        if (shiftMode == AUTOMATIC_SHIFT) {
        switch (shiftMode) {
        case AUTOMATIC_SHIFT:
            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()) {
                setShiftLocked(false);
            }
            keyboard.setShifted(shifted);
            break;
        case MANUAL_SHIFT:
            keyboard.setShifted(true);
            break;
        case UNSHIFT:
            keyboard.setShifted(false);
            break;
        }
        mKeyboardView.invalidateAllKeys();
    }
+1 −10
Original line number Diff line number Diff line
@@ -166,29 +166,20 @@ 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: 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()) {
                // Setting shift lock state should be delayed after
                // mSwitchActions.setShifted(shiftMode) is called, because in that call the state
                // is referenced.
                needsToTurnOffShiftLockedLater = true;
                mSwitchActions.setShiftLocked(false);
            }
            mKeyboardShiftState.setShifted(shifted);
        }
        mSwitchActions.setShifted(shiftMode);
        if (needsToTurnOffShiftLockedLater) {
            mKeyboardShiftState.setShiftLocked(false);
        }
    }

    private void setShiftLocked(boolean shiftLocked) {