Merge "Fix: Context menu can contain obsolete suggestions." into nyc-dev

am: 13d66d8456

* commit '13d66d8456ec4661a9eda5f26e72b1d9188bfbe6':
  Fix: Context menu can contain obsolete suggestions.
This commit is contained in:
Keisuke Kuroyanagi
2016-03-11 11:31:13 +00:00
committed by android-build-merger
2 changed files with 17 additions and 34 deletions

View File

@@ -290,7 +290,6 @@ public class Editor {
boolean mIsInsertionActionModeStartPending = false;
private final SuggestionHelper mSuggestionHelper = new SuggestionHelper();
private SuggestionInfo[] mSuggestionInfosInContextMenu;
Editor(TextView textView) {
mTextView = textView;
@@ -2454,21 +2453,24 @@ public class Editor {
}
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 @@ public class Editor {
}
};
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.

View File

@@ -143,6 +143,8 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2<
onView(withId(R.id.textview)).check(hasSelection(""));
onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex(text.indexOf("i")));
// TODO: Add tests for suggestions
}
@SmallTest