am 0d098c51: Fix bugs in key repeat logic
Merge commit '0d098c514eac2da144dcb856d9aa870bbe5be8c8' into gingerbread-plus-aosp * commit '0d098c514eac2da144dcb856d9aa870bbe5be8c8': Fix bugs in key repeat logicmain
commit
0a9ea46c2a
|
@ -1313,13 +1313,14 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener
|
|||
}
|
||||
|
||||
if (mHandler.isInKeyRepeat()) {
|
||||
// Will keep being in the key repeating mode while the key is being pressed. It'll be
|
||||
// canceled otherwise.
|
||||
if (pointerCount == 1 && action == MotionEvent.ACTION_MOVE) {
|
||||
return true;
|
||||
} else {
|
||||
// It'll be canceled if 2 or more keys are in action. Otherwise it will keep being in
|
||||
// the key repeating mode while the key is being pressed.
|
||||
if (pointerCount > 1) {
|
||||
mHandler.cancelKeyRepeatTimer();
|
||||
} else if (action == MotionEvent.ACTION_MOVE) {
|
||||
return true;
|
||||
}
|
||||
// Up event will pass through.
|
||||
}
|
||||
|
||||
if (pointerCount != mOldPointerCount) {
|
||||
|
@ -1415,6 +1416,7 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener
|
|||
break;
|
||||
|
||||
case MotionEvent.ACTION_UP:
|
||||
boolean wasInKeyRepeat = mHandler.isInKeyRepeat();
|
||||
mHandler.cancelKeyTimers();
|
||||
mHandler.cancelPopupPreview();
|
||||
if (mDebouncer.isMinorMoveBounce(touchX, touchY, keyIndex, mCurrentKey)) {
|
||||
|
@ -1431,7 +1433,7 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener
|
|||
}
|
||||
showPreview(NOT_A_KEY);
|
||||
// If we're not on a repeating key (which sends on a DOWN event)
|
||||
if (!mMiniKeyboardOnScreen && !mAbortKey) {
|
||||
if (!wasInKeyRepeat && !mMiniKeyboardOnScreen && !mAbortKey) {
|
||||
detectAndSendKey(mCurrentKey, touchX, touchY, eventTime);
|
||||
}
|
||||
invalidateKey(keyIndex);
|
||||
|
|
Loading…
Reference in New Issue