Skip to content
Snippets Groups Projects
Commit 3d4123fa authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Add PointerTracker argument to long press related methods

This change also adds debugging log to PointerTracker class

Bug: 2959169
Change-Id: Ie6cf67681180467bd8ba35d0205ce6727b7684a2
parent 3491c877
No related branches found
No related tags found
No related merge requests found
...@@ -254,9 +254,11 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener, ...@@ -254,9 +254,11 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener,
startKeyRepeatTimer(REPEAT_INTERVAL, msg.arg1, tracker); startKeyRepeatTimer(REPEAT_INTERVAL, msg.arg1, tracker);
break; break;
} }
case MSG_LONGPRESS_KEY: case MSG_LONGPRESS_KEY: {
openPopupIfRequired(msg.arg1); final PointerTracker tracker = (PointerTracker)msg.obj;
openPopupIfRequired(msg.arg1, tracker);
break; break;
}
} }
} }
...@@ -299,9 +301,9 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener, ...@@ -299,9 +301,9 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener,
return mInKeyRepeat; return mInKeyRepeat;
} }
public void startLongPressTimer(int keyIndex, long delay) { public void startLongPressTimer(long delay, int keyIndex, PointerTracker tracker) {
removeMessages(MSG_LONGPRESS_KEY); removeMessages(MSG_LONGPRESS_KEY);
sendMessageDelayed(obtainMessage(MSG_LONGPRESS_KEY, keyIndex, 0), delay); sendMessageDelayed(obtainMessage(MSG_LONGPRESS_KEY, keyIndex, 0, tracker), delay);
} }
public void cancelLongPressTimer() { public void cancelLongPressTimer() {
...@@ -962,16 +964,15 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener, ...@@ -962,16 +964,15 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener,
key.x + key.width + getPaddingLeft(), key.y + key.height + getPaddingTop()); key.x + key.width + getPaddingLeft(), key.y + key.height + getPaddingTop());
} }
private boolean openPopupIfRequired(int keyIndex) { private boolean openPopupIfRequired(int keyIndex, PointerTracker tracker) {
// Check if we have a popup layout specified first. // Check if we have a popup layout specified first.
if (mPopupLayout == 0) { if (mPopupLayout == 0) {
return false; return false;
} }
if (keyIndex < 0 || keyIndex >= mKeys.length) {
return false;
}
Key popupKey = mKeys[keyIndex]; Key popupKey = tracker.getKey(keyIndex);
if (popupKey == null)
return false;
boolean result = onLongPress(popupKey); boolean result = onLongPress(popupKey);
if (result) { if (result) {
dismissKeyPreview(); dismissKeyPreview();
......
...@@ -27,6 +27,7 @@ import android.view.ViewConfiguration; ...@@ -27,6 +27,7 @@ import android.view.ViewConfiguration;
public class PointerTracker { public class PointerTracker {
private static final String TAG = "PointerTracker"; private static final String TAG = "PointerTracker";
private static final boolean DEBUG = false; private static final boolean DEBUG = false;
private static final boolean DEBUG_MOVE = true && DEBUG;
public interface UIProxy { public interface UIProxy {
public void invalidateKey(Key key); public void invalidateKey(Key key);
...@@ -155,12 +156,12 @@ public class PointerTracker { ...@@ -155,12 +156,12 @@ public class PointerTracker {
repeatKey(keyIndex); repeatKey(keyIndex);
mHandler.startKeyRepeatTimer(REPEAT_START_DELAY, keyIndex, this); mHandler.startKeyRepeatTimer(REPEAT_START_DELAY, keyIndex, this);
} }
mHandler.startLongPressTimer(keyIndex, LONGPRESS_TIMEOUT); mHandler.startLongPressTimer(LONGPRESS_TIMEOUT, keyIndex, this);
} }
showKeyPreviewAndUpdateKey(keyIndex); showKeyPreviewAndUpdateKey(keyIndex);
updateMoveDebouncing(touchX, touchY); updateMoveDebouncing(touchX, touchY);
if (DEBUG) if (DEBUG)
Log.d(TAG, "onDownEvent: [" + mPointerId + "] modifier=" + isModifier()); debugLog("onDownEvent:", touchX, touchY);
} }
public void onMoveEvent(int touchX, int touchY, long eventTime) { public void onMoveEvent(int touchX, int touchY, long eventTime) {
...@@ -169,7 +170,7 @@ public class PointerTracker { ...@@ -169,7 +170,7 @@ public class PointerTracker {
if (mCurrentKey == NOT_A_KEY) { if (mCurrentKey == NOT_A_KEY) {
updateTimeDebouncing(eventTime); updateTimeDebouncing(eventTime);
mCurrentKey = keyIndex; mCurrentKey = keyIndex;
mHandler.startLongPressTimer(keyIndex, LONGPRESS_TIMEOUT); mHandler.startLongPressTimer(LONGPRESS_TIMEOUT, keyIndex, this);
} else if (isMinorMoveBounce(touchX, touchY, keyIndex, mCurrentKey)) { } else if (isMinorMoveBounce(touchX, touchY, keyIndex, mCurrentKey)) {
updateTimeDebouncing(eventTime); updateTimeDebouncing(eventTime);
} else { } else {
...@@ -177,7 +178,7 @@ public class PointerTracker { ...@@ -177,7 +178,7 @@ public class PointerTracker {
resetTimeDebouncing(eventTime, mCurrentKey); resetTimeDebouncing(eventTime, mCurrentKey);
resetMoveDebouncing(); resetMoveDebouncing();
mCurrentKey = keyIndex; mCurrentKey = keyIndex;
mHandler.startLongPressTimer(keyIndex, LONGPRESS_TIMEOUT); mHandler.startLongPressTimer(LONGPRESS_TIMEOUT, keyIndex, this);
} }
} else { } else {
mHandler.cancelLongPressTimer(); mHandler.cancelLongPressTimer();
...@@ -190,11 +191,13 @@ public class PointerTracker { ...@@ -190,11 +191,13 @@ public class PointerTracker {
*/ */
showKeyPreviewAndUpdateKey(isMinorTimeBounce() ? mLastKey : mCurrentKey); showKeyPreviewAndUpdateKey(isMinorTimeBounce() ? mLastKey : mCurrentKey);
updateMoveDebouncing(touchX, touchY); updateMoveDebouncing(touchX, touchY);
if (DEBUG_MOVE)
debugLog("onMoveEvent:", touchX, touchY);
} }
public void onUpEvent(int touchX, int touchY, long eventTime) { public void onUpEvent(int touchX, int touchY, long eventTime) {
if (DEBUG) if (DEBUG)
Log.d(TAG, "onUpEvent: [" + mPointerId + "] modifier=" + isModifier()); debugLog("onUpEvent :", touchX, touchY);
int keyIndex = mKeyDetector.getKeyIndexAndNearbyCodes(touchX, touchY, null); int keyIndex = mKeyDetector.getKeyIndexAndNearbyCodes(touchX, touchY, null);
boolean wasInKeyRepeat = mHandler.isInKeyRepeat(); boolean wasInKeyRepeat = mHandler.isInKeyRepeat();
mHandler.cancelKeyTimers(); mHandler.cancelKeyTimers();
...@@ -222,7 +225,7 @@ public class PointerTracker { ...@@ -222,7 +225,7 @@ public class PointerTracker {
public void onCancelEvent(int touchX, int touchY, long eventTime) { public void onCancelEvent(int touchX, int touchY, long eventTime) {
if (DEBUG) if (DEBUG)
Log.d(TAG, "onCancelEvent: [" + mPointerId + "]"); debugLog("onCancelEvt:", touchX, touchY);
mHandler.cancelKeyTimers(); mHandler.cancelKeyTimers();
mHandler.cancelPopupPreview(); mHandler.cancelPopupPreview();
mProxy.dismissPopupKeyboard(); mProxy.dismissPopupKeyboard();
...@@ -412,4 +415,18 @@ public class PointerTracker { ...@@ -412,4 +415,18 @@ public class PointerTracker {
resetMultiTap(); resetMultiTap();
} }
} }
private void debugLog(String title, int x, int y) {
Key key = getKey(mCurrentKey);
final String code;
if (key == null) {
code = "----";
} else {
int primaryCode = key.codes[0];
code = String.format((primaryCode < 0) ? "%4d" : "0x%02x", primaryCode);
}
Log.d(TAG,
String.format("%s [%d] %d,%d %s %s", title, mPointerId, x, y, code,
isModifier() ? "modifier" : ""));
}
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment