Fix gesture detection when sliding key input is disabled

Bug: 6867837
Change-Id: Icbfa69928c436343db545860a7d63171f52266b6
main
Tadashi G. Takaoka 2012-07-26 13:04:31 +09:00
parent 941f222c21
commit c902dfeb8f
1 changed files with 11 additions and 3 deletions

View File

@ -794,13 +794,16 @@ public class PointerTracker {
final int dx = x - lastX; final int dx = x - lastX;
final int dy = y - lastY; final int dy = y - lastY;
final int lastMoveSquared = dx * dx + dy * dy; final int lastMoveSquared = dx * dx + dy * dy;
// TODO: Should find a way to balance gesture detection and this hack.
if (sNeedsPhantomSuddenMoveEventHack if (sNeedsPhantomSuddenMoveEventHack
&& lastMoveSquared >= mKeyQuarterWidthSquared) { && lastMoveSquared >= mKeyQuarterWidthSquared
&& !mIsPossibleGesture) {
if (DEBUG_MODE) { if (DEBUG_MODE) {
Log.w(TAG, String.format("onMoveEvent:" Log.w(TAG, String.format("onMoveEvent:"
+ " phantom sudden move event is translated to " + " phantom sudden move event is translated to "
+ "up[%d,%d]/down[%d,%d] events", lastX, lastY, x, y)); + "up[%d,%d]/down[%d,%d] events", lastX, lastY, x, y));
} }
// TODO: This should be moved to outside of this nested if-clause?
if (ProductionFlag.IS_EXPERIMENTAL) { if (ProductionFlag.IS_EXPERIMENTAL) {
ResearchLogger.pointerTracker_onMoveEvent(x, y, lastX, lastY); ResearchLogger.pointerTracker_onMoveEvent(x, y, lastX, lastY);
} }
@ -816,7 +819,9 @@ public class PointerTracker {
&& !sPointerTrackerQueue.hasModifierKeyOlderThan(this)) { && !sPointerTrackerQueue.hasModifierKeyOlderThan(this)) {
onUpEventInternal(x, y, eventTime); onUpEventInternal(x, y, eventTime);
} }
mKeyAlreadyProcessed = true; if (!mIsPossibleGesture) {
mKeyAlreadyProcessed = true;
}
setReleasedKeyGraphics(oldKey); setReleasedKeyGraphics(oldKey);
} }
} }
@ -832,7 +837,9 @@ public class PointerTracker {
if (mIsAllowedSlidingKeyInput) { if (mIsAllowedSlidingKeyInput) {
onMoveToNewKey(key, x, y); onMoveToNewKey(key, x, y);
} else { } else {
mKeyAlreadyProcessed = true; if (!mIsPossibleGesture) {
mKeyAlreadyProcessed = true;
}
} }
} }
} }
@ -871,6 +878,7 @@ public class PointerTracker {
private void onUpEventInternal(int x, int y, long eventTime) { private void onUpEventInternal(int x, int y, long eventTime) {
mTimerProxy.cancelKeyTimers(); mTimerProxy.cancelKeyTimers();
mIsInSlidingKeyInput = false; mIsInSlidingKeyInput = false;
mIsPossibleGesture = false;
// Release the last pressed key. // Release the last pressed key.
setReleasedKeyGraphics(mCurrentKey); setReleasedKeyGraphics(mCurrentKey);
if (mIsShowingMoreKeysPanel) { if (mIsShowingMoreKeysPanel) {