Merge "Key release event should be sent when finger sliding (DO NOT MERGE)" into gingerbread

This commit is contained in:
Tadashi G. Takaoka 2010-12-05 18:18:26 -08:00 committed by Android (Google) Code Review
commit e75e00d898

View file

@ -296,18 +296,23 @@ public class PointerTracker {
if (mKeyAlreadyProcessed) if (mKeyAlreadyProcessed)
return; return;
KeyState keyState = mKeyState; KeyState keyState = mKeyState;
int keyIndex = keyState.onMoveKey(x, y); final int keyIndex = keyState.onMoveKey(x, y);
final Key oldKey = getKey(keyState.getKeyIndex());
if (isValidKeyIndex(keyIndex)) { if (isValidKeyIndex(keyIndex)) {
if (keyState.getKeyIndex() == NOT_A_KEY) { if (oldKey == null) {
keyState.onMoveToNewKey(keyIndex, x, y); keyState.onMoveToNewKey(keyIndex, x, y);
mHandler.startLongPressTimer(mLongPressKeyTimeout, keyIndex, this); mHandler.startLongPressTimer(mLongPressKeyTimeout, keyIndex, this);
} else if (!isMinorMoveBounce(x, y, keyIndex)) { } else if (!isMinorMoveBounce(x, y, keyIndex)) {
if (mListener != null)
mListener.onRelease(oldKey.codes[0]);
resetMultiTap(); resetMultiTap();
keyState.onMoveToNewKey(keyIndex, x, y); keyState.onMoveToNewKey(keyIndex, x, y);
mHandler.startLongPressTimer(mLongPressKeyTimeout, keyIndex, this); mHandler.startLongPressTimer(mLongPressKeyTimeout, keyIndex, this);
} }
} else { } else {
if (keyState.getKeyIndex() != NOT_A_KEY) { if (oldKey != null) {
if (mListener != null)
mListener.onRelease(oldKey.codes[0]);
keyState.onMoveToNewKey(keyIndex, x ,y); keyState.onMoveToNewKey(keyIndex, x ,y);
mHandler.cancelLongPressTimer(); mHandler.cancelLongPressTimer();
} else if (!isMinorMoveBounce(x, y, keyIndex)) { } else if (!isMinorMoveBounce(x, y, keyIndex)) {
@ -411,7 +416,7 @@ public class PointerTracker {
private void showKeyPreviewAndUpdateKey(int keyIndex) { private void showKeyPreviewAndUpdateKey(int keyIndex) {
updateKey(keyIndex); updateKey(keyIndex);
// The modifier key, such as shift key, should not be shown as preview when multi-touch is // The modifier key, such as shift key, should not be shown as preview when multi-touch is
// supported. On thge other hand, if multi-touch is not supported, the modifier key should // supported. On the other hand, if multi-touch is not supported, the modifier key should
// be shown as preview. // be shown as preview.
if (mHasDistinctMultitouch && isModifier()) { if (mHasDistinctMultitouch && isModifier()) {
mProxy.showPreview(NOT_A_KEY, this); mProxy.showPreview(NOT_A_KEY, this);