Merge "Fix the empty selection issue when onCreateActionMode returns false"
This commit is contained in:
@@ -297,12 +297,12 @@ public final class SelectionActionModeHelper {
|
|||||||
} else {
|
} else {
|
||||||
mTextClassification = null;
|
mTextClassification = null;
|
||||||
}
|
}
|
||||||
final SelectionModifierCursorController controller = mEditor.getSelectionController();
|
|
||||||
if (controller != null
|
|
||||||
&& (mTextView.isTextSelectable() || mTextView.isTextEditable())) {
|
|
||||||
controller.show();
|
|
||||||
}
|
|
||||||
if (mEditor.startActionModeInternal(actionMode)) {
|
if (mEditor.startActionModeInternal(actionMode)) {
|
||||||
|
final SelectionModifierCursorController controller = mEditor.getSelectionController();
|
||||||
|
if (controller != null
|
||||||
|
&& (mTextView.isTextSelectable() || mTextView.isTextEditable())) {
|
||||||
|
controller.show();
|
||||||
|
}
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
switch (actionMode) {
|
switch (actionMode) {
|
||||||
case Editor.TextActionMode.SELECTION:
|
case Editor.TextActionMode.SELECTION:
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package android.widget;
|
package android.widget;
|
||||||
|
|
||||||
import static android.widget.espresso.CustomViewActions.longPressAtRelativeCoordinates;
|
import static android.widget.espresso.CustomViewActions.longPressAtRelativeCoordinates;
|
||||||
|
import static android.widget.espresso.DragHandleUtils.assertNoSelectionHandles;
|
||||||
import static android.widget.espresso.DragHandleUtils.onHandleView;
|
import static android.widget.espresso.DragHandleUtils.onHandleView;
|
||||||
import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarContainsItem;
|
import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarContainsItem;
|
||||||
import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarDoesNotContainItem;
|
import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarDoesNotContainItem;
|
||||||
@@ -425,6 +426,41 @@ public class TextViewActivityTest {
|
|||||||
assertEquals(latestItem[0], clickedItem[0]);
|
assertEquals(latestItem[0], clickedItem[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSelectionOnCreateActionModeReturnsFalse() throws Throwable {
|
||||||
|
final String text = "hello world";
|
||||||
|
mActivityRule.runOnUiThread(() -> {
|
||||||
|
final TextView textView = mActivity.findViewById(R.id.textview);
|
||||||
|
textView.setText(text);
|
||||||
|
textView.setCustomSelectionActionModeCallback(
|
||||||
|
new ActionMode.Callback() {
|
||||||
|
@Override
|
||||||
|
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroyActionMode(ActionMode mode) {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
mInstrumentation.waitForIdleSync();
|
||||||
|
onView(withId(R.id.textview)).perform(longPressOnTextAtIndex(text.indexOf("d")));
|
||||||
|
mInstrumentation.waitForIdleSync();
|
||||||
|
assertNoSelectionHandles();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSelectionRemovedWhenNonselectableTextLosesFocus() throws Throwable {
|
public void testSelectionRemovedWhenNonselectableTextLosesFocus() throws Throwable {
|
||||||
final TextLinks.TextLink textLink = addLinkifiedTextToTextView(R.id.nonselectable_textview);
|
final TextLinks.TextLink textLink = addLinkifiedTextToTextView(R.id.nonselectable_textview);
|
||||||
|
|||||||
Reference in New Issue
Block a user