diff options
author | 2012-01-26 23:45:36 -0800 | |
---|---|---|
committer | 2012-01-26 23:45:36 -0800 | |
commit | c882d619bfe6eace7330c2097008500e81d39512 (patch) | |
tree | 37d2fc2b4f27daf711be508ca371d0a63a0ca251 /java/src | |
parent | 449415c72f437f523a49a9ccfcde8a3c0f583a18 (diff) | |
parent | f057b25cddb3e5e18bc56e8ddaab541044c6ba58 (diff) | |
download | latinime-c882d619bfe6eace7330c2097008500e81d39512.tar.gz latinime-c882d619bfe6eace7330c2097008500e81d39512.tar.xz latinime-c882d619bfe6eace7330c2097008500e81d39512.zip |
Merge "Save and restore previous mode keyboard state at KeyboardState.toggleAlphabetAndSymbols"
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java index a89356c50..5542bd32a 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java @@ -216,10 +216,24 @@ public class KeyboardState { } private void toggleAlphabetAndSymbols() { + if (DEBUG_ACTION) { + Log.d(TAG, "toggleAlphabetAndSymbols: " + this); + } if (mIsAlphabetMode) { - setSymbolsKeyboard(); + mPrevMainKeyboardWasShiftLocked = mAlphabetShiftState.isShiftLocked(); + if (mPrevSymbolsKeyboardWasShifted) { + setSymbolsShiftedKeyboard(); + } else { + setSymbolsKeyboard(); + } + mPrevSymbolsKeyboardWasShifted = false; } else { + mPrevSymbolsKeyboardWasShifted = mIsSymbolShifted; setAlphabetKeyboard(); + if (mPrevMainKeyboardWasShiftLocked) { + setShiftLocked(true); + } + mPrevMainKeyboardWasShiftLocked = false; } } @@ -235,24 +249,15 @@ public class KeyboardState { if (DEBUG_ACTION) { Log.d(TAG, "setAlphabetKeyboard"); } - mPrevSymbolsKeyboardWasShifted = mIsSymbolShifted; mSwitchActions.setAlphabetKeyboard(); mIsAlphabetMode = true; mIsSymbolShifted = false; mSwitchState = SWITCH_STATE_ALPHA; - setShiftLocked(mPrevMainKeyboardWasShiftLocked); - mPrevMainKeyboardWasShiftLocked = false; mSwitchActions.requestUpdatingShiftState(); } // TODO: Make this method private public void setSymbolsKeyboard() { - mPrevMainKeyboardWasShiftLocked = mAlphabetShiftState.isShiftLocked(); - if (mPrevSymbolsKeyboardWasShifted) { - setSymbolsShiftedKeyboard(); - return; - } - if (DEBUG_ACTION) { Log.d(TAG, "setSymbolsKeyboard"); } @@ -261,7 +266,6 @@ public class KeyboardState { mIsSymbolShifted = false; // Reset alphabet shift state. mAlphabetShiftState.setShiftLocked(false); - mPrevSymbolsKeyboardWasShifted = false; mSwitchState = SWITCH_STATE_SYMBOL_BEGIN; } @@ -274,7 +278,6 @@ public class KeyboardState { mIsSymbolShifted = true; // Reset alphabet shift state. mAlphabetShiftState.setShiftLocked(false); - mPrevSymbolsKeyboardWasShifted = false; mSwitchState = SWITCH_STATE_SYMBOL_BEGIN; } @@ -495,14 +498,14 @@ public class KeyboardState { } // Switch back to alpha keyboard mode immediately if user types a quote character. if (isLayoutSwitchBackCharacter(code)) { - setAlphabetKeyboard(); + toggleAlphabetAndSymbols(); } break; case SWITCH_STATE_SYMBOL: // Switch back to alpha keyboard mode if user types one or more non-space/enter // characters followed by a space/enter or a quote character. if (isSpaceCharacter(code) || isLayoutSwitchBackCharacter(code)) { - setAlphabetKeyboard(); + toggleAlphabetAndSymbols(); } break; } |