aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2012-01-16 02:14:14 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2012-01-16 02:14:14 -0800
commit93281dc57844fa9ca21fe7f1916e92a73253456c (patch)
tree2cda549a7e0e0e355aeb47a8455664afaa5c7e64 /java/src/com/android/inputmethod
parent93e154715cf6f25fa09d4148b4297d415ce30e12 (diff)
parentaf951181090339ac5747daa6dd9cd11325b671ad (diff)
downloadlatinime-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/src/com/android/inputmethod')
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java3
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java12
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) {