@@ -312,9 +312,9 @@ public void onAccessibilityEvent(AccessibilityEvent event) {
312312 switch (eventType ) {
313313 case AccessibilityEvent .TYPE_WINDOW_STATE_CHANGED :
314314 case AccessibilityEvent .TYPE_VIEW_ACCESSIBILITY_FOCUSED : {
315- if (mInjectedPointerTracker .mLastInjectedHoverEvent != null ) {
316- mInjectedPointerTracker .mLastInjectedHoverEvent .recycle ();
317- mInjectedPointerTracker .mLastInjectedHoverEvent = null ;
315+ if (mInjectedPointerTracker .mLastInjectedHoverEventForClick != null ) {
316+ mInjectedPointerTracker .mLastInjectedHoverEventForClick .recycle ();
317+ mInjectedPointerTracker .mLastInjectedHoverEventForClick = null ;
318318 }
319319 mLastTouchedWindowId = -1 ;
320320 } break ;
@@ -1077,7 +1077,8 @@ public void onDoubleTap(MotionEvent secondTapUp, int policyFlags) {
10771077 final int pointerId = secondTapUp .getPointerId (secondTapUp .getActionIndex ());
10781078 final int pointerIndex = secondTapUp .findPointerIndex (pointerId );
10791079
1080- MotionEvent lastExploreEvent = mInjectedPointerTracker .getLastInjectedHoverEvent ();
1080+ MotionEvent lastExploreEvent =
1081+ mInjectedPointerTracker .getLastInjectedHoverEventForClick ();
10811082 if (lastExploreEvent == null ) {
10821083 // No last touch explored event but there is accessibility focus in
10831084 // the active window. We click in the middle of the focus bounds.
@@ -1328,7 +1329,8 @@ public void run() {
13281329 final int pointerId = mEvent .getPointerId (mEvent .getActionIndex ());
13291330 final int pointerIndex = mEvent .findPointerIndex (pointerId );
13301331
1331- MotionEvent lastExploreEvent = mInjectedPointerTracker .getLastInjectedHoverEvent ();
1332+ MotionEvent lastExploreEvent =
1333+ mInjectedPointerTracker .getLastInjectedHoverEventForClick ();
13321334 if (lastExploreEvent == null ) {
13331335 // No last touch explored event but there is accessibility focus in
13341336 // the active window. We click in the middle of the focus bounds.
@@ -1482,6 +1484,9 @@ class InjectedPointerTracker {
14821484 // The last injected hover event.
14831485 private MotionEvent mLastInjectedHoverEvent ;
14841486
1487+ // The last injected hover event used for performing clicks.
1488+ private MotionEvent mLastInjectedHoverEventForClick ;
1489+
14851490 /**
14861491 * Processes an injected {@link MotionEvent} event.
14871492 *
@@ -1513,6 +1518,10 @@ public void onMotionEvent(MotionEvent event) {
15131518 mLastInjectedHoverEvent .recycle ();
15141519 }
15151520 mLastInjectedHoverEvent = MotionEvent .obtain (event );
1521+ if (mLastInjectedHoverEventForClick != null ) {
1522+ mLastInjectedHoverEventForClick .recycle ();
1523+ }
1524+ mLastInjectedHoverEventForClick = MotionEvent .obtain (event );
15161525 } break ;
15171526 }
15181527 if (DEBUG ) {
@@ -1566,6 +1575,13 @@ public MotionEvent getLastInjectedHoverEvent() {
15661575 return mLastInjectedHoverEvent ;
15671576 }
15681577
1578+ /**
1579+ * @return The the last injected hover event.
1580+ */
1581+ public MotionEvent getLastInjectedHoverEventForClick () {
1582+ return mLastInjectedHoverEventForClick ;
1583+ }
1584+
15691585 @ Override
15701586 public String toString () {
15711587 StringBuilder builder = new StringBuilder ();
0 commit comments