From 9a13cec9a1641c7c3b5e543fd37149154d06ee5d Mon Sep 17 00:00:00 2001 From: Seigo Nonaka Date: Thu, 8 Sep 2022 18:03:04 +0900 Subject: [PATCH] Cancel selection animation when new selection arrives The onAnimationEnd callback will set the selection but there is a race condition that the new selection may arrive during animation. The later selection should be honored, so cancel the ongoing animation before starting new selection. Bug: 244273440 Test: Manually done on the Pixel 5 with wireless mouse Change-Id: I977f6cc9244e571caddfe0d79e10ee1c6c8a413d --- core/java/android/widget/SelectionActionModeHelper.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/java/android/widget/SelectionActionModeHelper.java b/core/java/android/widget/SelectionActionModeHelper.java index be6b08fbddae6..075aa6c69aed2 100644 --- a/core/java/android/widget/SelectionActionModeHelper.java +++ b/core/java/android/widget/SelectionActionModeHelper.java @@ -148,6 +148,9 @@ public final class SelectionActionModeHelper { startSelectionActionMode(null); } else { resetTextClassificationHelper(); + if (mSmartSelectSprite != null && mSmartSelectSprite.isAnimationActive()) { + mSmartSelectSprite.cancelAnimation(); + } mTextClassificationAsyncTask = new TextClassificationAsyncTask( mTextView, mTextClassificationHelper.getTimeoutDuration(),