From 4d2c27b145969f4467cf70037eecf730572dcf5d Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Tue, 5 Jan 2010 14:06:18 -0800 Subject: [PATCH] Fix for 2345922: Press and hold space in ?123 mode will give ..... Abort the repeat sequence until the next touch down event. --- .../android/inputmethodservice/KeyboardView.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/core/java/android/inputmethodservice/KeyboardView.java b/core/java/android/inputmethodservice/KeyboardView.java index 76131fcd63161..b0c39093976b0 100755 --- a/core/java/android/inputmethodservice/KeyboardView.java +++ b/core/java/android/inputmethodservice/KeyboardView.java @@ -1118,6 +1118,11 @@ public class KeyboardView extends View implements View.OnClickListener { if (action == MotionEvent.ACTION_DOWN) mSwipeTracker.clear(); mSwipeTracker.addMovement(me); + // Ignore all motion events until a DOWN. + if (mAbortKey && action != MotionEvent.ACTION_DOWN) { + return true; + } + if (mGestureDetector.onTouchEvent(me)) { showPreview(NOT_A_KEY); mHandler.removeMessages(MSG_REPEAT); @@ -1150,9 +1155,14 @@ public class KeyboardView extends View implements View.OnClickListener { mKeys[keyIndex].codes[0] : 0); if (mCurrentKey >= 0 && mKeys[mCurrentKey].repeatable) { mRepeatKeyIndex = mCurrentKey; - repeatKey(); Message msg = mHandler.obtainMessage(MSG_REPEAT); mHandler.sendMessageDelayed(msg, REPEAT_START_DELAY); + repeatKey(); + // Delivering the key could have caused an abort + if (mAbortKey) { + mRepeatKeyIndex = NOT_A_KEY; + break; + } } if (mCurrentKey != NOT_A_KEY) { Message msg = mHandler.obtainMessage(MSG_LONGPRESS, me);