Merge "Fix: Context menu can contain obsolete suggestions." into nyc-dev
am: 13d66d8456
* commit '13d66d8456ec4661a9eda5f26e72b1d9188bfbe6':
Fix: Context menu can contain obsolete suggestions.
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index 3f5ad66..3b6ba3a 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -290,7 +290,6 @@
boolean mIsInsertionActionModeStartPending = false;
private final SuggestionHelper mSuggestionHelper = new SuggestionHelper();
- private SuggestionInfo[] mSuggestionInfosInContextMenu;
Editor(TextView textView) {
mTextView = textView;
@@ -2454,21 +2453,24 @@
}
if (shouldOfferToShowSuggestions()) {
- if (mSuggestionInfosInContextMenu == null) {
- mSuggestionInfosInContextMenu =
- new SuggestionInfo[SuggestionSpan.SUGGESTIONS_MAX_SIZE];
- for (int i = 0; i < mSuggestionInfosInContextMenu.length; i++) {
- mSuggestionInfosInContextMenu[i] = new SuggestionInfo();
- }
+ final SuggestionInfo[] suggestionInfoArray =
+ new SuggestionInfo[SuggestionSpan.SUGGESTIONS_MAX_SIZE];
+ for (int i = 0; i < suggestionInfoArray.length; i++) {
+ suggestionInfoArray[i] = new SuggestionInfo();
}
final SubMenu subMenu = menu.addSubMenu(Menu.NONE, Menu.NONE, MENU_ITEM_ORDER_REPLACE,
com.android.internal.R.string.replace);
- mSuggestionHelper.getSuggestionInfo(mSuggestionInfosInContextMenu);
- int i = 0;
- for (final SuggestionInfo info : mSuggestionInfosInContextMenu) {
- info.mSuggestionEnd = info.mText.length();
- subMenu.add(Menu.NONE, Menu.NONE, i++, info.mText)
- .setOnMenuItemClickListener(mOnContextMenuReplaceItemClickListener);
+ final int numItems = mSuggestionHelper.getSuggestionInfo(suggestionInfoArray);
+ for (int i = 0; i < numItems; i++) {
+ final SuggestionInfo info = suggestionInfoArray[i];
+ subMenu.add(Menu.NONE, Menu.NONE, i, info.mText)
+ .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ replaceWithSuggestion(info);
+ return true;
+ }
+ });
}
}
@@ -2609,27 +2611,6 @@
}
};
- private final MenuItem.OnMenuItemClickListener mOnContextMenuReplaceItemClickListener =
- new MenuItem.OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- int index = item.getOrder();
- if (index < 0 || index >= mSuggestionInfosInContextMenu.length) {
- clear();
- return false;
- }
- replaceWithSuggestion(mSuggestionInfosInContextMenu[index]);
- clear();
- return true;
- }
-
- private void clear() {
- for (final SuggestionInfo info : mSuggestionInfosInContextMenu) {
- info.clear();
- }
- }
- };
-
/**
* Controls the {@link EasyEditSpan} monitoring when it is added, and when the related
* pop-up should be displayed.
diff --git a/core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java b/core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java
index 00df87d..923b829 100644
--- a/core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java
+++ b/core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java
@@ -143,6 +143,8 @@
onView(withId(R.id.textview)).check(hasSelection(""));
onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex(text.indexOf("i")));
+
+ // TODO: Add tests for suggestions
}
@SmallTest