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

Commit 825e2bbd authored by Jean Chalard's avatar Jean Chalard
Browse files

Fix a bug when deleting the last char

And unit test

Change-Id: Ic4fc3626f8b86e10156d770d41cd6deab5d31f39
parent 71915a37
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -212,6 +212,7 @@ public class WordComposer {
            final int lastPos = size - 1;
            char lastChar = mTypedWord.charAt(lastPos);
            mCodes.remove(lastPos);
            // TODO: This crashes and catches fire if the code point doesn't fit a char
            mTypedWord.deleteCharAt(lastPos);
            if (Character.isUpperCase(lastChar)) mCapsCount--;
        }
@@ -221,8 +222,9 @@ public class WordComposer {
        if (mTrailingSingleQuotesCount > 0) {
            --mTrailingSingleQuotesCount;
        } else {
            for (int i = mTypedWord.offsetByCodePoints(mTypedWord.length(), -1);
                    i >= 0; i = mTypedWord.offsetByCodePoints(i, -1)) {
            int i = mTypedWord.length();
            while (i > 0) {
                i = mTypedWord.offsetByCodePoints(i, -1);
                if (Keyboard.CODE_SINGLE_QUOTE != mTypedWord.codePointAt(i)) break;
                ++mTrailingSingleQuotesCount;
            }
+9 −0
Original line number Diff line number Diff line
@@ -291,4 +291,13 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> {
        assertEquals("manual pick then space then type", WORD1_TO_TYPE + WORD2_TO_TYPE,
                mTextView.getText().toString());
    }

    public void testDeleteWholeComposingWord() {
        final String WORD_TO_TYPE = "this";
        type(WORD_TO_TYPE);
        for (int i = 0; i < WORD_TO_TYPE.length(); ++i) {
            type(Keyboard.CODE_DELETE);
        }
        assertEquals("delete whole composing word", "", mTextView.getText().toString());
    }
}