diff options
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/widget/Editor.java | 15 | ||||
| -rw-r--r-- | core/java/android/widget/SelectionActionModeHelper.java | 10 |
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: |
