Merge "Support resetting "smart selection" to any word in the selection." into oc-dev
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index 18554be..ad3a99d 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -841,7 +841,7 @@
* Adjusts selection to the word under last touch offset. Return true if the operation was
* successfully performed.
*/
- private boolean selectCurrentWord() {
+ boolean selectCurrentWord() {
if (!mTextView.canSelectText()) {
return false;
}
@@ -2186,7 +2186,7 @@
}
void onTouchUpEvent(MotionEvent event) {
- if (getSelectionActionModeHelper().resetOriginalSelection(
+ if (getSelectionActionModeHelper().resetSelection(
getTextView().getOffsetForPosition(event.getX(), event.getY()))) {
return;
}
diff --git a/core/java/android/widget/SelectionActionModeHelper.java b/core/java/android/widget/SelectionActionModeHelper.java
index beff1b0..4507917 100644
--- a/core/java/android/widget/SelectionActionModeHelper.java
+++ b/core/java/android/widget/SelectionActionModeHelper.java
@@ -98,8 +98,8 @@
}
}
- public boolean resetOriginalSelection(int textIndex) {
- if (mSelectionInfo.resetOriginalSelection(textIndex, mEditor.getTextView().getText())) {
+ public boolean resetSelection(int textIndex) {
+ if (mSelectionInfo.resetSelection(textIndex, mEditor)) {
invalidateActionModeAsync();
return true;
}
@@ -177,9 +177,9 @@
/**
* Holds information about the selection and uses it to decide on whether or not to update
- * the selection when resetOriginalSelection is called.
- * The expected UX here is to allow the user to re-snap the selection back to the original word
- * that was selected with one tap on that word.
+ * the selection when resetSelection is called.
+ * The expected UX here is to allow the user to select a word inside of the "smart selection" on
+ * a single tap.
*/
private static final class SelectionInfo {
@@ -212,14 +212,14 @@
mResetOriginal = false;
}
- public boolean resetOriginalSelection(int textIndex, CharSequence text) {
+ public boolean resetSelection(int textIndex, Editor editor) {
+ final CharSequence text = editor.getTextView().getText();
if (mResetOriginal
- && textIndex >= mOriginalStart && textIndex <= mOriginalEnd
+ && textIndex >= mSelectionStart && textIndex <= mSelectionEnd
&& text instanceof Spannable) {
- Selection.setSelection((Spannable) text, mOriginalStart, mOriginalEnd);
// Only allow a reset once.
mResetOriginal = false;
- return true;
+ return editor.selectCurrentWord();
}
return false;
}