Merge "Don't start long press timer while other one is running"
This commit is contained in:
commit
7ca3dbe3e5
3 changed files with 43 additions and 31 deletions
|
@ -425,8 +425,8 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
|||
*/
|
||||
@Override
|
||||
public void setKeyboard(final Keyboard keyboard) {
|
||||
// Remove any pending messages, except dismissing preview and key repeat.
|
||||
mKeyTimerHandler.cancelLongPressTimer();
|
||||
// Remove any pending messages.
|
||||
mKeyTimerHandler.cancelAllKeyTimers();
|
||||
super.setKeyboard(keyboard);
|
||||
mKeyDetector.setKeyboard(
|
||||
keyboard, -getPaddingLeft(), -getPaddingTop() + getVerticalCorrection());
|
||||
|
@ -987,7 +987,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
|||
if (mNonDistinctMultitouchHelper != null) {
|
||||
if (me.getPointerCount() > 1 && mKeyTimerHandler.isInKeyRepeat()) {
|
||||
// Key repeating timer will be canceled if 2 or more keys are in action.
|
||||
mKeyTimerHandler.cancelKeyRepeatTimer();
|
||||
mKeyTimerHandler.cancelKeyRepeatTimers();
|
||||
}
|
||||
// Non distinct multitouch screen support
|
||||
mNonDistinctMultitouchHelper.processMotionEvent(me, mKeyDetector);
|
||||
|
|
|
@ -67,13 +67,13 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
|
|||
public interface TimerProxy {
|
||||
public void startTypingStateTimer(Key typedKey);
|
||||
public boolean isTypingState();
|
||||
public void startKeyRepeatTimer(PointerTracker tracker, int repeatCount, int delay);
|
||||
public void startLongPressTimer(PointerTracker tracker, int delay);
|
||||
public void cancelLongPressTimer();
|
||||
public void startKeyRepeatTimerOf(PointerTracker tracker, int repeatCount, int delay);
|
||||
public void startLongPressTimerOf(PointerTracker tracker, int delay);
|
||||
public void cancelLongPressTimerOf(PointerTracker tracker);
|
||||
public void cancelKeyTimersOf(PointerTracker tracker);
|
||||
public void startDoubleTapShiftKeyTimer();
|
||||
public void cancelDoubleTapShiftKeyTimer();
|
||||
public boolean isInDoubleTapShiftKeyTimeout();
|
||||
public void cancelKeyTimers();
|
||||
public void startUpdateBatchInputTimer(PointerTracker tracker);
|
||||
public void cancelUpdateBatchInputTimer(PointerTracker tracker);
|
||||
public void cancelAllUpdateBatchInputTimers();
|
||||
|
@ -84,11 +84,13 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
|
|||
@Override
|
||||
public boolean isTypingState() { return false; }
|
||||
@Override
|
||||
public void startKeyRepeatTimer(PointerTracker tracker, int repeatCount, int delay) {}
|
||||
public void startKeyRepeatTimerOf(PointerTracker tracker, int repeatCount, int delay) {}
|
||||
@Override
|
||||
public void startLongPressTimer(PointerTracker tracker, int delay) {}
|
||||
public void startLongPressTimerOf(PointerTracker tracker, int delay) {}
|
||||
@Override
|
||||
public void cancelLongPressTimer() {}
|
||||
public void cancelLongPressTimerOf(PointerTracker tracker) {}
|
||||
@Override
|
||||
public void cancelKeyTimersOf(PointerTracker tracker) {}
|
||||
@Override
|
||||
public void startDoubleTapShiftKeyTimer() {}
|
||||
@Override
|
||||
|
@ -96,8 +98,6 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
|
|||
@Override
|
||||
public boolean isInDoubleTapShiftKeyTimeout() { return false; }
|
||||
@Override
|
||||
public void cancelKeyTimers() {}
|
||||
@Override
|
||||
public void startUpdateBatchInputTimer(PointerTracker tracker) {}
|
||||
@Override
|
||||
public void cancelUpdateBatchInputTimer(PointerTracker tracker) {}
|
||||
|
@ -741,7 +741,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
|
|||
sListener.onStartBatchInput();
|
||||
dismissAllMoreKeysPanels();
|
||||
}
|
||||
sTimerProxy.cancelLongPressTimer();
|
||||
sTimerProxy.cancelLongPressTimerOf(this);
|
||||
// A gesture floating preview text will be shown at the oldest pointer/finger on the screen.
|
||||
sDrawingProxy.showGestureTrail(
|
||||
this, isOldestTrackerInQueue() /* showsFloatingPreviewText */);
|
||||
|
@ -1072,7 +1072,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
|
|||
setReleasedKeyGraphics(oldKey);
|
||||
callListenerOnRelease(oldKey, oldKey.getCode(), true /* withSliding */);
|
||||
startKeySelectionByDraggingFinger(oldKey);
|
||||
sTimerProxy.cancelKeyTimers();
|
||||
sTimerProxy.cancelKeyTimersOf(this);
|
||||
}
|
||||
|
||||
private void dragFingerFromOldKeyToNewKey(final Key key, final int x, final int y,
|
||||
|
@ -1195,15 +1195,12 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
|
|||
if (DEBUG_EVENT) {
|
||||
printTouchEvent("onPhntEvent:", mLastX, mLastY, eventTime);
|
||||
}
|
||||
if (isShowingMoreKeysPanel()) {
|
||||
return;
|
||||
}
|
||||
onUpEventInternal(mLastX, mLastY, eventTime);
|
||||
cancelTrackingForAction();
|
||||
}
|
||||
|
||||
private void onUpEventInternal(final int x, final int y, final long eventTime) {
|
||||
sTimerProxy.cancelKeyTimers();
|
||||
sTimerProxy.cancelKeyTimersOf(this);
|
||||
final boolean isInDraggingFinger = mIsInDraggingFinger;
|
||||
final boolean isInSlidingKeyInput = mIsInSlidingKeyInput;
|
||||
resetKeySelectionByDraggingFinger();
|
||||
|
@ -1282,7 +1279,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
|
|||
}
|
||||
|
||||
private void onCancelEventInternal() {
|
||||
sTimerProxy.cancelKeyTimers();
|
||||
sTimerProxy.cancelKeyTimersOf(this);
|
||||
setReleasedKeyGraphics(mCurrentKey);
|
||||
resetKeySelectionByDraggingFinger();
|
||||
if (isShowingMoreKeysPanel()) {
|
||||
|
@ -1345,7 +1342,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
|
|||
if (mIsInDraggingFinger && key.getMoreKeys() == null) return;
|
||||
|
||||
final int delay = getLongPressTimeout(key.getCode());
|
||||
sTimerProxy.startLongPressTimer(this, delay);
|
||||
sTimerProxy.startLongPressTimerOf(this, delay);
|
||||
}
|
||||
|
||||
private int getLongPressTimeout(final int code) {
|
||||
|
@ -1398,7 +1395,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
|
|||
private void startKeyRepeatTimer(final int repeatCount) {
|
||||
final int delay =
|
||||
(repeatCount == 1) ? sParams.mKeyRepeatStartTimeout : sParams.mKeyRepeatInterval;
|
||||
sTimerProxy.startKeyRepeatTimer(this, repeatCount, delay);
|
||||
sTimerProxy.startKeyRepeatTimerOf(this, repeatCount, delay);
|
||||
}
|
||||
|
||||
private void printTouchEvent(final String title, final int x, final int y,
|
||||
|
|
|
@ -66,6 +66,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple
|
|||
tracker.onKeyRepeat(msg.arg1 /* code */, msg.arg2 /* repeatCount */);
|
||||
break;
|
||||
case MSG_LONGPRESS_KEY:
|
||||
cancelLongPressTimers();
|
||||
callbacks.onLongPress(tracker);
|
||||
break;
|
||||
case MSG_UPDATE_BATCH_INPUT:
|
||||
|
@ -76,7 +77,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple
|
|||
}
|
||||
|
||||
@Override
|
||||
public void startKeyRepeatTimer(final PointerTracker tracker, final int repeatCount,
|
||||
public void startKeyRepeatTimerOf(final PointerTracker tracker, final int repeatCount,
|
||||
final int delay) {
|
||||
final Key key = tracker.getKey();
|
||||
if (key == null || delay == 0) {
|
||||
|
@ -86,7 +87,11 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple
|
|||
obtainMessage(MSG_REPEAT_KEY, key.getCode(), repeatCount, tracker), delay);
|
||||
}
|
||||
|
||||
public void cancelKeyRepeatTimer() {
|
||||
private void cancelKeyRepeatTimerOf(final PointerTracker tracker) {
|
||||
removeMessages(MSG_REPEAT_KEY, tracker);
|
||||
}
|
||||
|
||||
public void cancelKeyRepeatTimers() {
|
||||
removeMessages(MSG_REPEAT_KEY);
|
||||
}
|
||||
|
||||
|
@ -96,14 +101,19 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple
|
|||
}
|
||||
|
||||
@Override
|
||||
public void startLongPressTimer(final PointerTracker tracker, final int delay) {
|
||||
cancelLongPressTimer();
|
||||
if (delay <= 0) return;
|
||||
public void startLongPressTimerOf(final PointerTracker tracker, final int delay) {
|
||||
if (delay <= 0) {
|
||||
return;
|
||||
}
|
||||
sendMessageDelayed(obtainMessage(MSG_LONGPRESS_KEY, tracker), delay);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelLongPressTimer() {
|
||||
public void cancelLongPressTimerOf(final PointerTracker tracker) {
|
||||
removeMessages(MSG_LONGPRESS_KEY, tracker);
|
||||
}
|
||||
|
||||
private void cancelLongPressTimers() {
|
||||
removeMessages(MSG_LONGPRESS_KEY);
|
||||
}
|
||||
|
||||
|
@ -159,9 +169,14 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple
|
|||
}
|
||||
|
||||
@Override
|
||||
public void cancelKeyTimers() {
|
||||
cancelKeyRepeatTimer();
|
||||
cancelLongPressTimer();
|
||||
public void cancelKeyTimersOf(final PointerTracker tracker) {
|
||||
cancelKeyRepeatTimerOf(tracker);
|
||||
cancelLongPressTimerOf(tracker);
|
||||
}
|
||||
|
||||
public void cancelAllKeyTimers() {
|
||||
cancelKeyRepeatTimers();
|
||||
cancelLongPressTimers();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -185,7 +200,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple
|
|||
}
|
||||
|
||||
public void cancelAllMessages() {
|
||||
cancelKeyTimers();
|
||||
cancelAllKeyTimers();
|
||||
cancelAllUpdateBatchInputTimers();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue