Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8630c531 authored by Seigo Nonaka's avatar Seigo Nonaka
Browse files

Use event source for the UI visibility

Bug: 240383641
Test: atest TextViewMouseInteractionTest
Change-Id: Iefc5c27a05c716b06678266582a89c275a3a74f2
parent ab0857dd
Loading
Loading
Loading
Loading
+10 −9
Original line number Diff line number Diff line
@@ -226,7 +226,7 @@ public class Editor {
    final UndoInputFilter mUndoInputFilter = new UndoInputFilter(this);
    boolean mAllowUndo = true;

    private int mLastToolType = MotionEvent.TOOL_TYPE_UNKNOWN;
    private int mLastInputSource = InputDevice.SOURCE_UNKNOWN;

    private final MetricsLogger mMetricsLogger = new MetricsLogger();

@@ -1735,7 +1735,7 @@ public class Editor {
    public void onTouchEvent(MotionEvent event) {
        final boolean filterOutEvent = shouldFilterOutTouchEvent(event);

        mLastToolType = event.getToolType(event.getActionIndex());
        mLastInputSource = event.getSource();

        mLastButtonState = event.getButtonState();
        if (filterOutEvent) {
@@ -1789,7 +1789,7 @@ public class Editor {
    }

    private void showFloatingToolbar() {
        if (mTextActionMode != null && showUIForFingerInput()) {
        if (mTextActionMode != null && showUIForTouchScreen()) {
            // Delay "show" so it doesn't interfere with click confirmations
            // or double-clicks that could "dismiss" the floating toolbar.
            int delay = ViewConfiguration.getDoubleTapTimeout();
@@ -1870,7 +1870,7 @@ public class Editor {
                    ? getSelectionController() : getInsertionController();
            if (cursorController != null && !cursorController.isActive()
                    && !cursorController.isCursorBeingModified()
                    && showUIForFingerInput()) {
                    && showUIForTouchScreen()) {
                cursorController.show();
            }
        }
@@ -2521,7 +2521,7 @@ public class Editor {
            return false;
        }

        if (!showUIForFingerInput()) {
        if (!showUIForTouchScreen()) {
            return false;
        }

@@ -2677,7 +2677,7 @@ public class Editor {
                    mTextView.postDelayed(mShowSuggestionRunnable,
                            ViewConfiguration.getDoubleTapTimeout());
                } else if (hasInsertionController()) {
                    if (shouldInsertCursor && showUIForFingerInput()) {
                    if (shouldInsertCursor && showUIForTouchScreen()) {
                        getInsertionController().show();
                    } else {
                        getInsertionController().hide();
@@ -5408,7 +5408,7 @@ public class Editor {
            final boolean shouldShow = checkForTransforms() /*check not rotated and compute scale*/
                    && !tooLargeTextForMagnifier()
                    && obtainMagnifierShowCoordinates(event, showPosInView)
                    && showUIForFingerInput();
                    && showUIForTouchScreen();
            if (shouldShow) {
                // Make the cursor visible and stop blinking.
                mRenderCursorRegardlessTiming = true;
@@ -6359,8 +6359,9 @@ public class Editor {
     *
     * @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;
    public boolean showUIForTouchScreen() {
        return (mLastInputSource & InputDevice.SOURCE_TOUCHSCREEN)
                == InputDevice.SOURCE_TOUCHSCREEN;
    }

    /** Controller for the insertion cursor. */
+1 −1
Original line number Diff line number Diff line
@@ -301,7 +301,7 @@ public final class SelectionActionModeHelper {
            final SelectionModifierCursorController controller = mEditor.getSelectionController();
            if (controller != null
                    && (mTextView.isTextSelectable() || mTextView.isTextEditable())) {
                if (mEditor.showUIForFingerInput()) {
                if (mEditor.showUIForTouchScreen()) {
                    controller.show();
                } else {
                    controller.hide();