From 83e63ace2a1bd5b3c27d26d914456c2b0def17c5 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Tue, 7 Sep 2010 15:37:59 +0900 Subject: [PATCH] Dismiss mini keyboard when finger is released outside mini keyboard Bug: 2978975 Change-Id: Ie634e8ae827fe093c5c673b75d85835050b03794 --- java/src/com/android/inputmethod/latin/LatinIME.java | 4 ++++ .../inputmethod/latin/LatinKeyboardBaseView.java | 9 +++++++++ .../com/android/inputmethod/latin/PointerTracker.java | 10 +++++++--- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index e5c6a54ce..229e13b8f 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -1213,6 +1213,10 @@ public class LatinIME extends InputMethodService mEnteredText = text; } + public void onCancel() { + // User released a finger outside any key + } + private void handleBackspace() { if (VOICE_INSTALLED && mVoiceInputHighlighted) { mVoiceInput.incrementTextModificationDeleteCount( diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java index a0366c273..8f1ec6591 100644 --- a/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java +++ b/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java @@ -123,6 +123,11 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx */ void onText(CharSequence text); + /** + * Called when user released a finger outside any key. + */ + void onCancel(); + /** * Called when the user quickly moves the finger from right to * left. @@ -1005,6 +1010,10 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx dismissPopupKeyboard(); } + public void onCancel() { + dismissPopupKeyboard(); + } + public void swipeLeft() { } public void swipeRight() { diff --git a/java/src/com/android/inputmethod/latin/PointerTracker.java b/java/src/com/android/inputmethod/latin/PointerTracker.java index f849158ae..8b1f019d4 100644 --- a/java/src/com/android/inputmethod/latin/PointerTracker.java +++ b/java/src/com/android/inputmethod/latin/PointerTracker.java @@ -389,9 +389,13 @@ public class PointerTracker { } private void detectAndSendKey(int index, int x, int y, long eventTime) { - if (isValidKeyIndex(index)) { - final Key key = mKeys[index]; - OnKeyboardActionListener listener = mListener; + final OnKeyboardActionListener listener = mListener; + final Key key = getKey(index); + + if (key == null) { + if (listener != null) + listener.onCancel(); + } else { if (key.text != null) { if (listener != null) { listener.onText(key.text);