From 5ef421b58afa7bc58be40ed9331ce04998efbf56 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Sun, 19 Dec 2010 20:27:11 +0900 Subject: [PATCH] Cancel long press timer when sliding key input is not allowed This change also fixes auto snap back behavior of key which has output text, such as smiley key. Bug: 3297825 Change-Id: Ia06e1abc0fbdff2a26504ddcce1dc7f933b45453 --- .../android/inputmethod/keyboard/KeyboardSwitcher.java | 2 +- .../com/android/inputmethod/keyboard/PointerTracker.java | 9 +++++---- java/src/com/android/inputmethod/latin/LatinIME.java | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java index 31d98a676..0fb90143d 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java @@ -576,7 +576,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } break; case AUTO_MODE_SWITCH_STATE_SYMBOL_BEGIN: - if (key != Keyboard.CODE_SPACE && key != Keyboard.CODE_ENTER && key > 0) { + if (key != Keyboard.CODE_SPACE && key != Keyboard.CODE_ENTER && key >= 0) { mAutoModeSwitchState = AUTO_MODE_SWITCH_STATE_SYMBOL; } break; diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java index ffaf3db6a..15eab8fed 100644 --- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java +++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java @@ -296,6 +296,7 @@ public class PointerTracker { // onRelease() first to notify that the previous key has been released, then call // onPress() to notify that the new key is being pressed. callListenerOnRelease(oldKey.mCodes[0]); + mHandler.cancelLongPressTimers(); if (mIsAllowedSlidingKeyInput) { resetMultiTap(); callListenerOnPress(getKey(keyIndex).mCodes[0]); @@ -312,10 +313,10 @@ public class PointerTracker { // The pointer has been slid out from the previous key, we must call onRelease() to // notify that the previous key has been released. callListenerOnRelease(oldKey.mCodes[0]); + mHandler.cancelLongPressTimers(); if (mIsAllowedSlidingKeyInput) { resetMultiTap(); keyState.onMoveToNewKey(keyIndex, x ,y); - mHandler.cancelLongPressTimers(); } else { setAlreadyProcessed(); showKeyPreviewAndUpdateKeyGraphics(NOT_A_KEY); @@ -332,10 +333,10 @@ public class PointerTracker { if (DEBUG_EVENT) printTouchEvent("onUpEvent :", x, y, eventTime); showKeyPreviewAndUpdateKeyGraphics(NOT_A_KEY); - if (mKeyAlreadyProcessed) - return; mHandler.cancelKeyTimers(); mHandler.cancelPopupPreview(); + if (mKeyAlreadyProcessed) + return; final PointerTrackerKeyState keyState = mKeyState; int keyIndex = keyState.onUpKey(x, y); if (isMinorMoveBounce(x, y, keyIndex)) { @@ -438,7 +439,7 @@ public class PointerTracker { } if (key.mOutputText != null) { callListenerOnText(key.mOutputText); - callListenerOnRelease(NOT_A_KEY); + callListenerOnRelease(key.mCodes[0]); } else { int code = key.mCodes[0]; final int[] codes = mKeyDetector.newCodeArray(); diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 12a24e87a..3a3a000de 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -1128,6 +1128,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen ic.commitText(text, 1); ic.endBatchEdit(); mKeyboardSwitcher.updateShiftState(); + mKeyboardSwitcher.onKey(0); // dummy key code. mJustReverted = false; mJustAddedAutoSpace = false; mEnteredText = text;