From 7aedc8a054aca41e6c80d8faf0ed2dd47f9815c4 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Sun, 19 Dec 2010 19:06:44 +0900 Subject: Automaticaly snap back to the previous mode from sliding input (DO NOT MERGE) This change is back porting of the following changes from Honeycomb. - I48ea1346: Automaticaly snap back to the previous mode from sliding symbol input - I9507a98c: Suppress haptic feedback while sliding key input - Ia06e1abc: Cancel long press timer when sliding key input is not allowed - I15127929: Fix checking of sliding off from key - I2518dd1d: Fix potential keyboard layout change bug - Iffaad1eb: Snap back to the previous keyboard when sliding input is canceled - Id74bddef: Longer long-press timeout in sliding input Bug: 3280151 Change-Id: If20b34e8773ebf081c2274d136be4f8ad07ca4fa --- .../inputmethod/latin/LatinKeyboardBaseView.java | 31 ++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java') diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java index b1ef08573..008d37202 100644 --- a/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java +++ b/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java @@ -343,7 +343,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx cancelPopupPreview(); cancelDismissPreview(); } - }; + } static class PointerQueue { private LinkedList mQueue = new LinkedList(); @@ -391,6 +391,14 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx public void remove(PointerTracker tracker) { mQueue.remove(tracker); } + + public boolean isInSlidingKeyInput() { + for (final PointerTracker tracker : mQueue) { + if (tracker.isInSlidingKeyInput()) + return true; + } + return false; + } } public LatinKeyboardBaseView(Context context, AttributeSet attrs) { @@ -1086,6 +1094,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx } public void onCancel() { + mKeyboardActionListener.onCancel(); dismissPopupKeyboard(); } @@ -1294,15 +1303,29 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx return pointers.get(id); } + public boolean isInSlidingKeyInput() { + if (mMiniKeyboard != null) { + return mMiniKeyboard.isInSlidingKeyInput(); + } else { + return mPointerQueue.isInSlidingKeyInput(); + } + } + + public int getPointerCount() { + return mOldPointerCount; + } + @Override public boolean onTouchEvent(MotionEvent me) { - final int pointerCount = me.getPointerCount(); final int action = me.getActionMasked(); + final int pointerCount = me.getPointerCount(); + final int oldPointerCount = mOldPointerCount; + mOldPointerCount = pointerCount; // TODO: cleanup this code into a multi-touch to single-touch event converter class? // If the device does not have distinct multi-touch support panel, ignore all multi-touch // events except a transition from/to single-touch. - if (!mHasDistinctMultitouch && pointerCount > 1 && mOldPointerCount > 1) { + if (!mHasDistinctMultitouch && pointerCount > 1 && oldPointerCount > 1) { return true; } @@ -1358,7 +1381,6 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx if (!mHasDistinctMultitouch) { // Use only main (id=0) pointer tracker. PointerTracker tracker = getPointerTracker(0); - int oldPointerCount = mOldPointerCount; if (pointerCount == 1 && oldPointerCount == 2) { // Multi-touch to single touch transition. // Send a down event for the latest pointer. @@ -1373,7 +1395,6 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx Log.w(TAG, "Unknown touch panel behavior: pointer count is " + pointerCount + " (old " + oldPointerCount + ")"); } - mOldPointerCount = pointerCount; return true; } -- cgit v1.2.3-83-g751a