diff options
author | 2010-06-30 18:38:50 -0700 | |
---|---|---|
committer | 2010-06-30 18:38:50 -0700 | |
commit | b54abe22ab9cc683b15b2863e870c1c36a141e0e (patch) | |
tree | aa926e3b5e2a2541b2c03dda713c7c6296cb48a6 /java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java | |
parent | c891d4d16cce1fd7fce08738ee3bdba946998f20 (diff) | |
parent | 59d271ee763efac79c07e8224490e3755284e603 (diff) | |
download | latinime-b54abe22ab9cc683b15b2863e870c1c36a141e0e.tar.gz latinime-b54abe22ab9cc683b15b2863e870c1c36a141e0e.tar.xz latinime-b54abe22ab9cc683b15b2863e870c1c36a141e0e.zip |
Merge "Add key debounce. bug: 2517112"
Diffstat (limited to 'java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java index 7f35ea98e..4205aadcf 100644 --- a/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java +++ b/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java @@ -182,6 +182,8 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener private int mVerticalCorrection; private int mProximityThreshold; + private int mKeyDebounceThreshold; + private static final int KEY_DEBOUNCE_FACTOR = 6; private boolean mPreviewCentered = false; private boolean mShowPreview = true; @@ -633,6 +635,9 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener if (dimensionSum < 0 || length == 0) return; mProximityThreshold = (int) (dimensionSum * 1.4f / length); mProximityThreshold *= mProximityThreshold; // Square it + + // 1/KEY_DEBOUNCE_FACTOR of distance between adjacent keys + mKeyDebounceThreshold = mProximityThreshold / KEY_DEBOUNCE_FACTOR; } @Override @@ -1158,6 +1163,13 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener return result; } + private boolean isMinorMoveForKeyDebounce(int x, int y) { + // TODO: Check the coordinate against each key border. The current + // logic is pretty simple. + return ((x - mLastCodeX) * (x - mLastCodeX) + + (y - mLastCodeY) * (y - mLastCodeY)) < mKeyDebounceThreshold; + } + private boolean onModifiedTouchEvent(MotionEvent me, boolean possiblePoly) { int touchX = (int) me.getX() - getPaddingLeft(); int touchY = (int) me.getY() + mVerticalCorrection - getPaddingTop(); @@ -1231,7 +1243,8 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener mCurrentKey = keyIndex; mCurrentKeyTime = eventTime - mDownTime; } else { - if (keyIndex == mCurrentKey) { + if (keyIndex == mCurrentKey + || isMinorMoveForKeyDebounce(touchX, touchY)) { mCurrentKeyTime += eventTime - mLastMoveTime; continueLongPress = true; } else if (mRepeatKeyIndex == NOT_A_KEY) { |