diff options
| author | Tadashi G. Takaoka <takaoka@google.com> | 2012-02-16 11:45:35 -0800 |
|---|---|---|
| committer | Tadashi G. Takaoka <takaoka@google.com> | 2012-02-16 18:02:17 -0800 |
| commit | beb08b398fa73a26f2d42d6feec87e34a96ca2d9 (patch) | |
| tree | 0d7e415c8003973f1dc71db379a4319cf620778c /java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java | |
| parent | 25ff89a75cb8b797bdaf0c7b78e50fd454c1b1e2 (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.java | 11 |
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. |
