aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/PointerTracker.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/inputmethod/latin/PointerTracker.java')
-rw-r--r--java/src/com/android/inputmethod/latin/PointerTracker.java20
1 files changed, 19 insertions, 1 deletions
diff --git a/java/src/com/android/inputmethod/latin/PointerTracker.java b/java/src/com/android/inputmethod/latin/PointerTracker.java
index 5b5cbe5cc..cb45e2100 100644
--- a/java/src/com/android/inputmethod/latin/PointerTracker.java
+++ b/java/src/com/android/inputmethod/latin/PointerTracker.java
@@ -61,6 +61,7 @@ public class PointerTracker {
private int mCurrentKey = NOT_A_KEY;
private int mStartX;
private int mStartY;
+ private long mDownTime;
// for move de-bouncing
private int mLastCodeX;
@@ -144,6 +145,7 @@ public class PointerTracker {
mCurrentKey = keyIndex;
mStartX = x;
mStartY = y;
+ mDownTime = eventTime;
startMoveDebouncing(x, y);
startTimeDebouncing(eventTime);
checkMultiTap(eventTime, keyIndex);
@@ -181,7 +183,19 @@ public class PointerTracker {
mHandler.startLongPressTimer(LONGPRESS_TIMEOUT, keyIndex, this);
}
} else {
- mHandler.cancelLongPressTimer();
+ if (mCurrentKey != NOT_A_KEY) {
+ updateTimeDebouncing(eventTime);
+ mCurrentKey = keyIndex;
+ mHandler.cancelLongPressTimer();
+ } else if (isMinorMoveBounce(x, y, keyIndex, mCurrentKey)) {
+ updateTimeDebouncing(eventTime);
+ } else {
+ resetMultiTap();
+ resetTimeDebouncing(eventTime, mCurrentKey);
+ resetMoveDebouncing();
+ mCurrentKey = keyIndex;
+ mHandler.cancelLongPressTimer();
+ }
}
/*
* While time debouncing is in effect, mCurrentKey holds the new key and this tracker
@@ -252,6 +266,10 @@ public class PointerTracker {
return mLastY;
}
+ public long getDownTime() {
+ return mDownTime;
+ }
+
// These package scope methods are only for debugging purpose.
/* package */ int getStartX() {
return mStartX;