Merge "Add PointerTracker argument to long press related methods" into gingerbread
commit
6b4d521fb4
|
@ -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,
|
||||||
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,
|
||||||
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;
|
||||||
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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
*/
|
*/
|
||||||
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 {
|
||||||
|
|
||||||
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 {
|
||||||
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" : ""));
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue