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

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

Merge "Pressing shift could turn off shift state while auto capitalize mode" into honeycomb

parents 8b0febc6 d01ae897
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -330,6 +330,10 @@ public class Keyboard {
        return isAlphaKeyboard() && mShiftState.isManualTemporaryUpperCase();
    }

    public boolean isManualTemporaryUpperCaseFromAuto() {
        return isAlphaKeyboard() && mShiftState.isManualTemporaryUpperCaseFromAuto();
    }

    public KeyboardShiftState getKeyboardShiftState() {
        return mShiftState;
    }
+39 −11
Original line number Diff line number Diff line
@@ -24,25 +24,37 @@ public class KeyboardShiftState {

    private static final int NORMAL = 0;
    private static final int MANUAL_SHIFTED = 1;
    private static final int SHIFT_LOCKED = 2;
    private static final int MANUAL_SHIFTED_FROM_AUTO = 2;
    private static final int AUTO_SHIFTED = 3;
    private static final int SHIFT_LOCK_SHIFTED = 4;
    private static final int SHIFT_LOCKED = 4;
    private static final int SHIFT_LOCK_SHIFTED = 5;

    private int mState = NORMAL;

    public boolean setShifted(boolean newShiftState) {
        final int oldState = mState;
        if (newShiftState) {
            if (oldState == NORMAL || oldState == AUTO_SHIFTED) {
            switch (oldState) {
            case NORMAL:
                mState = MANUAL_SHIFTED;
            } else if (oldState == SHIFT_LOCKED) {
                break;
            case AUTO_SHIFTED:
                mState = MANUAL_SHIFTED_FROM_AUTO;
                break;
            case SHIFT_LOCKED:
                mState = SHIFT_LOCK_SHIFTED;
                break;
            }
        } else {
            if (oldState == MANUAL_SHIFTED || oldState == AUTO_SHIFTED) {
            switch (oldState) {
            case MANUAL_SHIFTED:
            case MANUAL_SHIFTED_FROM_AUTO:
            case AUTO_SHIFTED:
                mState = NORMAL;
            } else if (oldState == SHIFT_LOCK_SHIFTED) {
                break;
            case SHIFT_LOCK_SHIFTED:
                mState = SHIFT_LOCKED;
                break;
            }
        }
        if (DEBUG)
@@ -53,11 +65,21 @@ public class KeyboardShiftState {
    public void setShiftLocked(boolean newShiftLockState) {
        final int oldState = mState;
        if (newShiftLockState) {
            if (oldState == NORMAL || oldState == MANUAL_SHIFTED || oldState == AUTO_SHIFTED)
            switch (oldState) {
            case NORMAL:
            case MANUAL_SHIFTED:
            case MANUAL_SHIFTED_FROM_AUTO:
            case AUTO_SHIFTED:
                mState = SHIFT_LOCKED;
                break;
            }
        } else {
            if (oldState == SHIFT_LOCKED || oldState == SHIFT_LOCK_SHIFTED)
            switch (oldState) {
            case SHIFT_LOCKED:
            case SHIFT_LOCK_SHIFTED:
                mState = NORMAL;
                break;
            }
        }
        if (DEBUG)
            Log.d(TAG, "setShiftLocked(" + newShiftLockState + "): " + toString(oldState)
@@ -84,7 +106,12 @@ public class KeyboardShiftState {
    }

    public boolean isManualTemporaryUpperCase() {
        return mState == MANUAL_SHIFTED || mState == SHIFT_LOCK_SHIFTED;
        return mState == MANUAL_SHIFTED || mState == MANUAL_SHIFTED_FROM_AUTO
                || mState == SHIFT_LOCK_SHIFTED;
    }

    public boolean isManualTemporaryUpperCaseFromAuto() {
        return mState == MANUAL_SHIFTED_FROM_AUTO;
    }

    @Override
@@ -96,8 +123,9 @@ public class KeyboardShiftState {
        switch (state) {
        case NORMAL: return "NORMAL";
        case MANUAL_SHIFTED: return "MANUAL_SHIFTED";
        case SHIFT_LOCKED: return "SHIFT_LOCKED";
        case MANUAL_SHIFTED_FROM_AUTO: return "MANUAL_SHIFTED_FROM_AUTO";
        case AUTO_SHIFTED: return "AUTO_SHIFTED";
        case SHIFT_LOCKED: return "SHIFT_LOCKED";
        case SHIFT_LOCK_SHIFTED: return "SHIFT_LOCK_SHIFTED";
        default: return "UKNOWN";
        }
+11 −0
Original line number Diff line number Diff line
@@ -327,6 +327,13 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
        return false;
    }

    private boolean isManualTemporaryUpperCaseFromAuto() {
        LatinKeyboard latinKeyboard = getLatinKeyboard();
        if (latinKeyboard != null)
            return latinKeyboard.isManualTemporaryUpperCaseFromAuto();
        return false;
    }

    private void setManualTemporaryUpperCase(boolean shifted) {
        LatinKeyboard latinKeyboard = getLatinKeyboard();
        if (latinKeyboard != null) {
@@ -482,6 +489,10 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
            } else if (isShiftedOrShiftLocked() && shiftKeyState.isPressingOnShifted()) {
                // Shift has been pressed without chording while shifted state.
                toggleShift();
            } else if (isManualTemporaryUpperCaseFromAuto() && shiftKeyState.isPressing()) {
                // Shift has been pressed without chording while manual temporary upper case
                // transited from automatic temporary upper case.
                toggleShift();
            }
        }
        shiftKeyState.onRelease();