summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/widget/Editor.java15
-rw-r--r--core/java/android/widget/SelectionActionModeHelper.java10
2 files changed, 16 insertions, 9 deletions
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index eaa738d59577..f02f2ebe3c1c 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -4105,6 +4105,8 @@ public class Editor {
private final boolean mHasSelection;
private final int mHandleHeight;
private final Map<MenuItem, OnClickListener> mAssistClickHandlers = new HashMap<>();
+ @Nullable
+ private TextClassification mPrevTextClassification;
TextActionModeCallback(@TextActionMode int mode) {
mHasSelection = mode == TextActionMode.SELECTION
@@ -4255,15 +4257,19 @@ public class Editor {
}
private void updateAssistMenuItems(Menu menu) {
- clearAssistMenuItems(menu);
- if (!shouldEnableAssistMenuItems()) {
- return;
- }
final TextClassification textClassification =
getSelectionActionModeHelper().getTextClassification();
+ if (mPrevTextClassification == textClassification) {
+ // Already handled.
+ return;
+ }
+ clearAssistMenuItems(menu);
if (textClassification == null) {
return;
}
+ if (!shouldEnableAssistMenuItems()) {
+ return;
+ }
if (!textClassification.getActions().isEmpty()) {
// Primary assist action (Always shown).
final MenuItem item = addAssistMenuItem(menu,
@@ -4290,6 +4296,7 @@ public class Editor {
MENU_ITEM_ORDER_SECONDARY_ASSIST_ACTIONS_START + i - 1,
MenuItem.SHOW_AS_ACTION_NEVER);
}
+ mPrevTextClassification = textClassification;
}
private MenuItem addAssistMenuItem(Menu menu, RemoteAction action, int itemId, int order,
diff --git a/core/java/android/widget/SelectionActionModeHelper.java b/core/java/android/widget/SelectionActionModeHelper.java
index 32c68bdd0491..e74ce53306c1 100644
--- a/core/java/android/widget/SelectionActionModeHelper.java
+++ b/core/java/android/widget/SelectionActionModeHelper.java
@@ -296,12 +296,12 @@ public final class SelectionActionModeHelper {
} else {
mTextClassification = null;
}
+ final SelectionModifierCursorController controller = mEditor.getSelectionController();
+ if (controller != null
+ && (mTextView.isTextSelectable() || mTextView.isTextEditable())) {
+ controller.show();
+ }
if (mEditor.startActionModeInternal(actionMode)) {
- final SelectionModifierCursorController controller = mEditor.getSelectionController();
- if (controller != null
- && (mTextView.isTextSelectable() || mTextView.isTextEditable())) {
- controller.show();
- }
if (result != null) {
switch (actionMode) {
case Editor.TextActionMode.SELECTION: