From 62f51e67225f8b430121e5f31d7f37be90dc95b5 Mon Sep 17 00:00:00 2001 From: Shu Chen Date: Thu, 22 Oct 2020 12:26:52 +0800 Subject: [PATCH] Makes the multi-touch prevention only works for editable TextView. The original logic of preventing the multi-touch issue for the edtiable text view was introduced by ag/10930920. Turns out the non-editable text views are affected. The root cause of the issue is that: - the ACTION_DOWN/ACTION_UP events, as well as ACTION_PONITER_DOWN / ACTION_POINTER_UP, could be generated by different fingers, - and View#onTouchEvent() gets muted when isFromPrimePointer() == false, - so that no gesture is generated, e.g. click, long press, etc. Note that View#onTouchEvent() is necessary to be muted to prevent long press on text or scrolling while dragging the insertion handle view. Bug: 169288151 Change-Id: Ia763e94be727ad23bb13839f146293f1579d03ec (cherry picked from commit 265096d9dac9cdfdce11f24f1b840b3139ea6fc0) --- core/java/android/widget/TextView.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index e16bf5a188086..5870ae79083f6 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -11009,12 +11009,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener MotionEvent.actionToString(event.getActionMasked()), event.getX(), event.getY()); } - if (!isFromPrimePointer(event, false)) { - return true; - } - final int action = event.getActionMasked(); if (mEditor != null) { + if (!isFromPrimePointer(event, false)) { + return true; + } + mEditor.onTouchEvent(event); if (mEditor.mInsertionPointCursorController != null