summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--services/java/com/android/server/accessibility/TouchExplorer.java14
1 files changed, 10 insertions, 4 deletions
diff --git a/services/java/com/android/server/accessibility/TouchExplorer.java b/services/java/com/android/server/accessibility/TouchExplorer.java
index 67bdabd..d97b022 100644
--- a/services/java/com/android/server/accessibility/TouchExplorer.java
+++ b/services/java/com/android/server/accessibility/TouchExplorer.java
@@ -327,9 +327,10 @@ public class TouchExplorer {
if (mSendHoverEnterDelayed.isPending()) {
mSendHoverEnterDelayed.remove();
mSendHoverExitDelayed.remove();
- mPerformLongPressDelayed.remove();
}
+ mPerformLongPressDelayed.remove();
+
// If we have the first tap schedule a long press and break
// since we do not want to schedule hover enter because
// the delayed callback will kick in before the long click.
@@ -396,6 +397,7 @@ public class TouchExplorer {
// exploring so start sending events.
mSendHoverEnterDelayed.forceSendAndRemove();
mSendHoverExitDelayed.remove();
+ mPerformLongPressDelayed.remove();
sendMotionEvent(event, MotionEvent.ACTION_HOVER_MOVE,
pointerIdBits, policyFlags);
}
@@ -422,6 +424,7 @@ public class TouchExplorer {
mSendHoverExitDelayed.remove();
mPerformLongPressDelayed.remove();
} else {
+ mPerformLongPressDelayed.remove();
// If the user is touch exploring the second pointer may be
// performing a double tap to activate an item without need
// for the user to lift his exploring finger.
@@ -446,9 +449,6 @@ public class TouchExplorer {
if (isDraggingGesture(event)) {
// Two pointers moving in the same direction within
// a given distance perform a drag.
- mSendHoverEnterDelayed.remove();
- mSendHoverExitDelayed.remove();
- mPerformLongPressDelayed.remove();
mCurrentState = STATE_DRAGGING;
mDraggingPointerId = pointerId;
sendMotionEvent(event, MotionEvent.ACTION_DOWN, pointerIdBits,
@@ -469,6 +469,7 @@ public class TouchExplorer {
mSendHoverExitDelayed.remove();
mPerformLongPressDelayed.remove();
} else {
+ mPerformLongPressDelayed.remove();
// We are sending events so send exit and gesture
// end since we transition to another state.
sendExitEventsIfNeeded(policyFlags);
@@ -1247,6 +1248,11 @@ public class TouchExplorer {
@Override
public void run() {
+ // Active pointers should not be zero when running this command.
+ if (mReceivedPointerTracker.getActivePointerCount() == 0) {
+ return;
+ }
+
// If the last touched explored location is not within the focused
// window we will long press at that exact spot, otherwise we find the
// accessibility focus and if the tap is within its bounds we long press