Merge "Hide text UIs for mouse interaction"
This commit is contained in:
committed by
Android (Google) Code Review
commit
7e56ce1098
@@ -226,6 +226,8 @@ public class Editor {
|
||||
final UndoInputFilter mUndoInputFilter = new UndoInputFilter(this);
|
||||
boolean mAllowUndo = true;
|
||||
|
||||
private int mLastToolType = MotionEvent.TOOL_TYPE_UNKNOWN;
|
||||
|
||||
private final MetricsLogger mMetricsLogger = new MetricsLogger();
|
||||
|
||||
// Cursor Controllers.
|
||||
@@ -1732,6 +1734,9 @@ public class Editor {
|
||||
@VisibleForTesting
|
||||
public void onTouchEvent(MotionEvent event) {
|
||||
final boolean filterOutEvent = shouldFilterOutTouchEvent(event);
|
||||
|
||||
mLastToolType = event.getToolType(event.getActionIndex());
|
||||
|
||||
mLastButtonState = event.getButtonState();
|
||||
if (filterOutEvent) {
|
||||
if (event.getActionMasked() == MotionEvent.ACTION_UP) {
|
||||
@@ -1784,7 +1789,7 @@ public class Editor {
|
||||
}
|
||||
|
||||
private void showFloatingToolbar() {
|
||||
if (mTextActionMode != null) {
|
||||
if (mTextActionMode != null && showUIForFingerInput()) {
|
||||
// Delay "show" so it doesn't interfere with click confirmations
|
||||
// or double-clicks that could "dismiss" the floating toolbar.
|
||||
int delay = ViewConfiguration.getDoubleTapTimeout();
|
||||
@@ -1864,7 +1869,8 @@ public class Editor {
|
||||
final CursorController cursorController = mTextView.hasSelection()
|
||||
? getSelectionController() : getInsertionController();
|
||||
if (cursorController != null && !cursorController.isActive()
|
||||
&& !cursorController.isCursorBeingModified()) {
|
||||
&& !cursorController.isCursorBeingModified()
|
||||
&& showUIForFingerInput()) {
|
||||
cursorController.show();
|
||||
}
|
||||
}
|
||||
@@ -2515,6 +2521,10 @@ public class Editor {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!showUIForFingerInput()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ActionMode.Callback actionModeCallback = new TextActionModeCallback(actionMode);
|
||||
mTextActionMode = mTextView.startActionMode(actionModeCallback, ActionMode.TYPE_FLOATING);
|
||||
registerOnBackInvokedCallback();
|
||||
@@ -2667,7 +2677,7 @@ public class Editor {
|
||||
mTextView.postDelayed(mShowSuggestionRunnable,
|
||||
ViewConfiguration.getDoubleTapTimeout());
|
||||
} else if (hasInsertionController()) {
|
||||
if (shouldInsertCursor) {
|
||||
if (shouldInsertCursor && showUIForFingerInput()) {
|
||||
getInsertionController().show();
|
||||
} else {
|
||||
getInsertionController().hide();
|
||||
@@ -5397,7 +5407,8 @@ public class Editor {
|
||||
final PointF showPosInView = new PointF();
|
||||
final boolean shouldShow = checkForTransforms() /*check not rotated and compute scale*/
|
||||
&& !tooLargeTextForMagnifier()
|
||||
&& obtainMagnifierShowCoordinates(event, showPosInView);
|
||||
&& obtainMagnifierShowCoordinates(event, showPosInView)
|
||||
&& showUIForFingerInput();
|
||||
if (shouldShow) {
|
||||
// Make the cursor visible and stop blinking.
|
||||
mRenderCursorRegardlessTiming = true;
|
||||
@@ -6343,6 +6354,15 @@ public class Editor {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true when need to show UIs, e.g. floating toolbar, etc, for finger based interaction.
|
||||
*
|
||||
* @return true if UIs need to show for finger interaciton. false if UIs are not necessary.
|
||||
*/
|
||||
public boolean showUIForFingerInput() {
|
||||
return mLastToolType != MotionEvent.TOOL_TYPE_MOUSE;
|
||||
}
|
||||
|
||||
/** Controller for the insertion cursor. */
|
||||
@VisibleForTesting
|
||||
public class InsertionPointCursorController implements CursorController {
|
||||
|
||||
@@ -301,7 +301,11 @@ public final class SelectionActionModeHelper {
|
||||
final SelectionModifierCursorController controller = mEditor.getSelectionController();
|
||||
if (controller != null
|
||||
&& (mTextView.isTextSelectable() || mTextView.isTextEditable())) {
|
||||
controller.show();
|
||||
if (mEditor.showUIForFingerInput()) {
|
||||
controller.show();
|
||||
} else {
|
||||
controller.hide();
|
||||
}
|
||||
}
|
||||
if (result != null) {
|
||||
switch (actionMode) {
|
||||
|
||||
Reference in New Issue
Block a user