Disallow interception of multitouch events

The shade mishandles multitouch events when the first touch
originates in the status bar, which results in the second touch
being an ACTION_DOWN instead of ACTION_POINTER_DOWN. This causes
multiple problems, so it's preferable to not intercept these
events when we detect them.

Fixes: 198553252
Test: manual and atest
Change-Id: Ib420e0aa207610d5493e7db904eaf31da221a2bf
This commit is contained in:
Justin Weir
2023-03-02 16:06:23 -05:00
parent f5c58b6765
commit 5336e81038

View File

@@ -4628,8 +4628,13 @@ public final class NotificationPanelViewController implements Dumpable {
gesture possible. */
int pointerIndex = event.findPointerIndex(mTrackingPointer);
if (pointerIndex < 0) {
pointerIndex = 0;
mTrackingPointer = event.getPointerId(pointerIndex);
if (mTrackingPointer < 0) {
pointerIndex = 0;
mTrackingPointer = event.getPointerId(pointerIndex);
} else {
mShadeLog.logMotionEvent(event, "Skipping intercept of multitouch pointer");
return false;
}
}
final float x = event.getX(pointerIndex);
final float y = event.getY(pointerIndex);