diff options
author | 2012-01-16 02:14:14 -0800 | |
---|---|---|
committer | 2012-01-16 02:14:14 -0800 | |
commit | 93281dc57844fa9ca21fe7f1916e92a73253456c (patch) | |
tree | 2cda549a7e0e0e355aeb47a8455664afaa5c7e64 /java | |
parent | 93e154715cf6f25fa09d4148b4297d415ce30e12 (diff) | |
parent | af951181090339ac5747daa6dd9cd11325b671ad (diff) | |
download | latinime-93281dc57844fa9ca21fe7f1916e92a73253456c.tar.gz latinime-93281dc57844fa9ca21fe7f1916e92a73253456c.tar.xz latinime-93281dc57844fa9ca21fe7f1916e92a73253456c.zip |
am af951181: Merge "Fix double tap shift key to turn off capslock mode"
* commit 'af951181090339ac5747daa6dd9cd11325b671ad':
Fix double tap shift key to turn off capslock mode
Diffstat (limited to 'java')
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java | 3 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java | 12 |
2 files changed, 12 insertions, 3 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java index 54d842f09..df61689e1 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java @@ -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); } diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java index 42f069c83..609593e44 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java @@ -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) { |