From 4303f22535080267200a3d2b03a4dd0bc061bf38 Mon Sep 17 00:00:00 2001 From: Andrei Stingaceanu Date: Thu, 7 Sep 2017 14:12:38 +0100 Subject: [PATCH] TextView longpress 2 haptic feedback fix TextView#performLongClick() calls View#performLongClick which calls View#performLongClickInternal() which, if handled, performs the longpress haptic feedback and returns handled. TextView looks at this return value and if it is true then makes another call to perform longpress haptic feedback. Remove the duplicate call in TextView as the one in the parent (View) is sufficient. Bug: 65397911 Test: manual Change-Id: Ic73a86637486d5382b63f1c1b37783e238452841 --- core/java/android/widget/TextView.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index b2e2e889d16cf..cd2d2fdf5a8a4 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -10875,6 +10875,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener @Override public boolean performLongClick() { boolean handled = false; + boolean performedHapticFeedback = false; if (mEditor != null) { mEditor.mIsBeingLongClicked = true; @@ -10882,6 +10883,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (super.performLongClick()) { handled = true; + performedHapticFeedback = true; } if (mEditor != null) { @@ -10890,7 +10892,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } if (handled) { - performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + if (!performedHapticFeedback) { + performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + } if (mEditor != null) mEditor.mDiscardNextActionUp = true; } else { MetricsLogger.action(