diff options
author | 2010-09-03 12:51:03 +0900 | |
---|---|---|
committer | 2010-09-03 13:03:08 +0900 | |
commit | c5d33b16521de56ad01b0b6308217efb009078b7 (patch) | |
tree | e08cfc51b91945e83ed3658147df0f778687a4fb /java/src/com/android/inputmethod/latin/PointerTracker.java | |
parent | 7083b7486ec62ab06818e1bfbd0694d5f3563473 (diff) | |
download | latinime-c5d33b16521de56ad01b0b6308217efb009078b7.tar.gz latinime-c5d33b16521de56ad01b0b6308217efb009078b7.tar.xz latinime-c5d33b16521de56ad01b0b6308217efb009078b7.zip |
Fix NPE in LatinKeyboardBaseView
This change also refactors some mini-keyboard related methods in
LatinKeyboardBaseView and PointerTracker class.
Bug: 2973236
Change-Id: I3190fe89ea3ac3c6d351ed4b6d77de98a0aa65db
Diffstat (limited to 'java/src/com/android/inputmethod/latin/PointerTracker.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/PointerTracker.java | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/java/src/com/android/inputmethod/latin/PointerTracker.java b/java/src/com/android/inputmethod/latin/PointerTracker.java index cb45e2100..a4447d58b 100644 --- a/java/src/com/android/inputmethod/latin/PointerTracker.java +++ b/java/src/com/android/inputmethod/latin/PointerTracker.java @@ -32,9 +32,6 @@ public class PointerTracker { public interface UIProxy { public void invalidateKey(Key key); public void showPreview(int keyIndex, PointerTracker tracker); - // TODO: These methods might be temporary. - public void dismissPopupKeyboard(); - public boolean isMiniKeyboardOnScreen(); } public final int mPointerId; @@ -63,6 +60,9 @@ public class PointerTracker { private int mStartY; private long mDownTime; + // true if event is already translated to a key action (long press or mini-keyboard) + private boolean mKeyAlreadyProcessed; + // for move de-bouncing private int mLastCodeX; private int mLastCodeY; @@ -140,12 +140,17 @@ public class PointerTracker { } } + public void setAlreadyProcessed() { + mKeyAlreadyProcessed = true; + } + public void onDownEvent(int x, int y, long eventTime) { int keyIndex = mKeyDetector.getKeyIndexAndNearbyCodes(x, y, null); mCurrentKey = keyIndex; mStartX = x; mStartY = y; mDownTime = eventTime; + mKeyAlreadyProcessed = false; startMoveDebouncing(x, y); startTimeDebouncing(eventTime); checkMultiTap(eventTime, keyIndex); @@ -230,7 +235,7 @@ public class PointerTracker { } showKeyPreviewAndUpdateKey(NOT_A_KEY); // If we're not on a repeating key (which sends on a DOWN event) - if (!wasInKeyRepeat && !mProxy.isMiniKeyboardOnScreen()) { + if (!wasInKeyRepeat && !mKeyAlreadyProcessed) { detectAndSendKey(mCurrentKey, (int)x, (int)y, eventTime); } if (isValidKeyIndex(keyIndex)) @@ -242,7 +247,6 @@ public class PointerTracker { debugLog("onCancelEvt:", x, y); mHandler.cancelKeyTimers(); mHandler.cancelPopupPreview(); - mProxy.dismissPopupKeyboard(); showKeyPreviewAndUpdateKey(NOT_A_KEY); int keyIndex = mCurrentKey; if (isValidKeyIndex(keyIndex)) |