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

Commit 63b3fc0d authored by Jean Chalard's avatar Jean Chalard Committed by Android Git Automerger
Browse files

am 15142588: Merge "Have "no whitespace before cursor" upon gesture trigger...

am 15142588: Merge "Have "no whitespace before cursor" upon gesture trigger phantom space" into jb-mr1-dev

* commit '15142588':
  Have "no whitespace before cursor" upon gesture trigger phantom space
parents 658e935b 15142588
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1429,6 +1429,12 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
            // The following is necessary for the case where the user typed something but didn't
            // manual pick it and didn't input any separator.
            mSpaceState = SPACE_STATE_PHANTOM;
        } else {
            final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
            if (Constants.NOT_A_CODE != codePointBeforeCursor
                    && !Character.isWhitespace(codePointBeforeCursor)) {
                mSpaceState = SPACE_STATE_PHANTOM;
            }
        }
        mConnection.endBatchEdit();
        mWordComposer.setCapitalizedModeAtStartComposingTime(getActualCapsMode());
@@ -1564,6 +1570,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
        // We have a TLD (or something that looks like this): make sure we don't add
        // a space even if currently in phantom mode.
        mSpaceState = SPACE_STATE_NONE;
        // TODO: use getCodePointBeforeCursor instead to improve performance and simplify the code
        final CharSequence lastOne = mConnection.getTextBeforeCursor(1, 0);
        if (lastOne != null && lastOne.length() == 1
                && lastOne.charAt(0) == Keyboard.CODE_PERIOD) {
@@ -2284,6 +2291,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
            // This is a stopgap solution to avoid leaving a high surrogate alone in a text view.
            // In the future, we need to deprecate deteleSurroundingText() and have a surrogate
            // pair-friendly way of deleting characters in InputConnection.
            // TODO: use getCodePointBeforeCursor instead to improve performance
            final CharSequence lastChar = mConnection.getTextBeforeCursor(1, 0);
            if (!TextUtils.isEmpty(lastChar) && Character.isHighSurrogate(lastChar.charAt(0))) {
                mConnection.deleteSurroundingText(1, 0);
+7 −0
Original line number Diff line number Diff line
@@ -235,7 +235,14 @@ public final class RichInputConnection {
                hasSpaceBefore);
    }

    public int getCodePointBeforeCursor() {
        if (mCommittedTextBeforeComposingText.length() < 1) return Constants.NOT_A_CODE;
        return Character.codePointBefore(mCommittedTextBeforeComposingText,
                mCommittedTextBeforeComposingText.length());
    }

    public CharSequence getTextBeforeCursor(final int i, final int j) {
        // TODO: use mCommittedTextBeforeComposingText if possible to improve performance
        mIC = mParent.getCurrentInputConnection();
        if (null != mIC) return mIC.getTextBeforeCursor(i, j);
        return null;