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

Commit 10585620 authored by Jean Chalard's avatar Jean Chalard Committed by Android (Google) Code Review
Browse files

Merge "Fix a bug in the cached cursor pos, and simplify selection handling"

parents 1fc6b800 e5dee0af
Loading
Loading
Loading
Loading
+6 −9
Original line number Diff line number Diff line
@@ -926,19 +926,15 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
            }
        }

        // TODO: refactor the following code to be less contrived.
        // "newSelStart != composingSpanEnd" || "newSelEnd != composingSpanEnd" means
        // that the cursor is not at the end of the composing span, or there is a selection.
        // "mLastSelectionStart != newSelStart" means that the cursor is not in the same place
        // as last time we were called (if there is a selection, it means the start hasn't
        // changed, so it's the end that did).
        final boolean selectionChanged = (newSelStart != composingSpanEnd
                || newSelEnd != composingSpanEnd) && mLastSelectionStart != newSelStart;
        final boolean selectionChanged = mLastSelectionStart != newSelStart
                || mLastSelectionEnd != newSelEnd;
        // if composingSpanStart and composingSpanEnd are -1, it means there is no composing
        // span in the view - we can use that to narrow down whether the cursor was moved
        // by us or not. If we are composing a word but there is no composing span, then
        // we know for sure the cursor moved while we were composing and we should reset
        // the state.
        // the state. TODO: rescind this policy: the framework never removes the composing
        // span on its own accord while editing. This test is useless.

        final boolean noComposingSpan = composingSpanStart == -1 && composingSpanEnd == -1;
        // If the keyboard is not visible, we don't need to do all the housekeeping work, as it
        // will be reset when the keyboard shows up anyway.
@@ -979,6 +975,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
            if (isSuggestionsStripVisible()) {
                mHandler.postResumeSuggestions();
            }
            mConnection.userMovedCursor(newSelEnd);
            // Reset the last recapitalization.
            mRecapitalizeStatus.deactivate();
            mKeyboardSwitcher.updateShiftState();
+8 −1
Original line number Diff line number Diff line
@@ -340,7 +340,6 @@ public final class RichInputConnection {
    public void setComposingRegion(final int start, final int end) {
        if (DEBUG_BATCH_NESTING) checkBatchEdit();
        if (DEBUG_PREVIOUS_TEXT) checkConsistencyForDebug();
        mCurrentCursorPosition = end;
        final CharSequence textBeforeCursor =
                getTextBeforeCursor(DEFAULT_TEXT_CACHE_SIZE + (end - start), 0);
        mCommittedTextBeforeComposingText.setLength(0);
@@ -730,6 +729,14 @@ public final class RichInputConnection {
        return (newSelStart - oldSelStart) * (mCurrentCursorPosition - newSelStart) >= 0;
    }

    /**
     * The user moved the cursor by hand. Take a note of it.
     * @param newCursorPosition The new cursor position.
     */
    public void userMovedCursor(final int newCursorPosition) {
        mCurrentCursorPosition = newCursorPosition;
    }

    /**
     * Looks at the text just before the cursor to find out if it looks like a URL.
     *