summaryrefslogtreecommitdiff
path: root/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2012-02-16 11:45:35 -0800
committerTadashi G. Takaoka <takaoka@google.com>2012-02-16 18:02:17 -0800
commitbeb08b398fa73a26f2d42d6feec87e34a96ca2d9 (patch)
tree0d7e415c8003973f1dc71db379a4319cf620778c /java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
parent25ff89a75cb8b797bdaf0c7b78e50fd454c1b1e2 (diff)
Remove unnecessary and harmful KeyboardState.onUpdateShiftState call
This change also cancels double tap and long press timers if other letter key is pressed after shift key. Bug: 5693999 Bug: 6017610 Change-Id: I3b5f3debfb8915fa73a93b409a38afadf24132e9
Diffstat (limited to 'java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java')
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
index cb8b4f05c..6a8a03677 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
@@ -54,7 +54,9 @@ public class KeyboardState {
public void startDoubleTapTimer();
public boolean isInDoubleTapTimeout();
+ public void cancelDoubleTapTimer();
public void startLongPressTimer(int code);
+ public void cancelLongPressTimer();
public void hapticAndAudioFeedback(int code);
}
@@ -300,6 +302,8 @@ public class KeyboardState {
} else if (code == Keyboard.CODE_SWITCH_ALPHA_SYMBOL) {
onPressSymbol();
} else {
+ mSwitchActions.cancelDoubleTapTimer();
+ mSwitchActions.cancelLongPressTimer();
mShiftKeyState.onOtherKeyPressed();
mSymbolKeyState.onOtherKeyPressed();
}
@@ -348,7 +352,7 @@ public class KeyboardState {
// state. And mark as if shift key is released.
mShiftKeyState.onRelease();
} else {
- // Shift key is long pressed while shift unloked state.
+ // Shift key is long pressed while shift unlocked state.
setShiftLocked(true);
}
mSwitchActions.hapticAndAudioFeedback(code);
@@ -364,6 +368,11 @@ public class KeyboardState {
private void updateAlphabetShiftState(boolean autoCaps) {
if (!mIsAlphabetMode) return;
+ if (!mShiftKeyState.isReleasing()) {
+ // Ignore update shift state event while the shift key is being pressed (including
+ // chording).
+ return;
+ }
if (!mAlphabetShiftState.isShiftLocked() && !mShiftKeyState.isIgnoring()) {
if (mShiftKeyState.isReleasing() && autoCaps) {
// Only when shift key is releasing, automatic temporary upper case will be set.