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

Commit f68fe7a9 authored by Jean Chalard's avatar Jean Chalard
Browse files

Don't forward phantom space state on stripper input

Bug: 6890540
Change-Id: I923b24e3bc17e7b923be4940ad739b58dca24a1f
parent ca57f5ba
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -1651,13 +1651,18 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
            if (swapWeakSpace) {
                swapSwapperAndSpace();
                mSpaceState = SPACE_STATE_SWAP_PUNCTUATION;
            } else if (SPACE_STATE_PHANTOM == spaceState) {
            } else if (SPACE_STATE_PHANTOM == spaceState
                    && !mCurrentSettings.isWeakSpaceStripper(primaryCode)) {
                // If we are in phantom space state, and the user presses a separator, we want to
                // stay in phantom space state so that the next keypress has a chance to add the
                // space. For example, if I type "Good dat", pick "day" from the suggestion strip
                // then insert a comma and go on to typing the next word, I want the space to be
                // inserted automatically before the next word, the same way it is when I don't
                // input the comma.
                // The case is a little different if the separator is a space stripper. Such a
                // separator does not normally need a space on the right (that's the difference
                // between swappers and strippers), so we should not stay in phantom space state if
                // the separator is a stripper. Hence the additional test above.
                mSpaceState = SPACE_STATE_PHANTOM;
            }

+13 −0
Original line number Diff line number Diff line
@@ -216,6 +216,19 @@ public class InputLogicTests extends InputTestsBase {
        assertEquals("manual pick then separator", EXPECTED_RESULT, mTextView.getText().toString());
    }

    public void testManualPickThenStripperThenPick() {
        final String WORD_TO_TYPE = "this";
        final String STRIPPER = "\n";
        final String EXPECTED_RESULT = "this\nthis";
        type(WORD_TO_TYPE);
        pickSuggestionManually(0, WORD_TO_TYPE);
        type(STRIPPER);
        type(WORD_TO_TYPE);
        pickSuggestionManually(0, WORD_TO_TYPE);
        assertEquals("manual pick then \\n then manual pick", EXPECTED_RESULT,
                mTextView.getText().toString());
    }

    public void testManualPickThenSpaceThenType() {
        final String WORD1_TO_TYPE = "this";
        final String WORD2_TO_TYPE = " is";