From 0d0a46da0393c6dd73cccf5e22cb0dd70c99e15a Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Mon, 22 Nov 2010 17:20:48 -0800 Subject: [PATCH] Fix caps lock release in non-distinct multi touch device Bug: 3221869 Change-Id: I7c5d407c465f22945cba37e42683345913b43acc --- .../inputmethod/latin/KeyboardSwitcher.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java index 08ff41b6f..f1f8dc27d 100644 --- a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java +++ b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java @@ -412,8 +412,17 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha private void setManualTemporaryUpperCase(boolean shifted) { LatinKeyboard latinKeyboard = getLatinKeyboard(); - if (latinKeyboard != null && latinKeyboard.setShifted(shifted)) { - mInputView.invalidateAllKeys(); + if (latinKeyboard != null) { + // 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 && latinKeyboard.isShiftLocked()) { + latinKeyboard.setShiftLocked(false); + } + if (latinKeyboard.setShifted(shifted)) { + mInputView.invalidateAllKeys(); + } } } @@ -424,6 +433,9 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } } + /** + * Toggle keyboard shift state triggered by user touch event. + */ public void toggleShift() { mInputMethodService.mHandler.cancelUpdateShiftState(); if (DEBUG_STATE) @@ -463,6 +475,9 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } } + /** + * Update keyboard shift state triggered by connected EditText status change. + */ public void updateShiftState() { final ShiftKeyState shiftKeyState = mShiftKeyState; if (DEBUG_STATE)