Loading java/src/com/android/inputmethod/latin/LastComposedWord.java +16 −3 Original line number Diff line number Diff line Loading @@ -38,25 +38,38 @@ public final class LastComposedWord { // or it may be exactly what the user typed if it's in the dictionary or the IME does not have // enough confidence in any suggestion to auto-correct (auto-correct to typed word). public static final int COMMIT_TYPE_DECIDED_WORD = 2; // COMMIT_TYPE_CANCEL_AUTO_CORRECT is used upon committing back the old word upon cancelling // an auto-correction. public static final int COMMIT_TYPE_CANCEL_AUTO_CORRECT = 3; public static final String NOT_A_SEPARATOR = ""; public final ArrayList<Event> mEvents; public final String mTypedWord; public final CharSequence mCommittedWord; public final String mSeparatorString; public final String mPrevWord; public final int mCapitalizedMode; public final InputPointers mInputPointers = new InputPointers(Constants.DICTIONARY_MAX_WORD_LENGTH); private boolean mActive; public static final LastComposedWord NOT_A_COMPOSED_WORD = new LastComposedWord("", "", NOT_A_SEPARATOR, null, WordComposer.CAPS_MODE_OFF); new LastComposedWord(new ArrayList<Event>(), null, "", "", NOT_A_SEPARATOR, null, WordComposer.CAPS_MODE_OFF); // Warning: this is using the passed objects as is and fully expects them to be // immutable. Do not fiddle with their contents after you passed them to this constructor. public LastComposedWord(final String typedWord, final CharSequence committedWord, final String separatorString, final String prevWord, final int capitalizedMode) { public LastComposedWord(final ArrayList<Event> events, final InputPointers inputPointers, final String typedWord, final CharSequence committedWord, final String separatorString, final String prevWord, final int capitalizedMode) { if (inputPointers != null) { mInputPointers.copy(inputPointers); } mTypedWord = typedWord; mEvents = new ArrayList<Event>(events); mCommittedWord = committedWord; mSeparatorString = separatorString; mActive = true; Loading java/src/com/android/inputmethod/latin/WordComposer.java +21 −2 Original line number Diff line number Diff line Loading @@ -426,8 +426,9 @@ public final class WordComposer { // Note: currently, we come here whenever we commit a word. If it's a MANUAL_PICK // or a DECIDED_WORD we may cancel the commit later; otherwise, we should deactivate // the last composed word to ensure this does not happen. final LastComposedWord lastComposedWord = new LastComposedWord( mTypedWord.toString(), committedWord, separatorString, prevWord, mCapitalizedMode); final LastComposedWord lastComposedWord = new LastComposedWord(mEvents, mInputPointers, mTypedWord.toString(), committedWord, separatorString, prevWord, mCapitalizedMode); mInputPointers.reset(); if (type != LastComposedWord.COMMIT_TYPE_DECIDED_WORD && type != LastComposedWord.COMMIT_TYPE_MANUAL_PICK) { Loading Loading @@ -458,6 +459,24 @@ public final class WordComposer { public void discardPreviousWordForSuggestion() { mPreviousWordForSuggestion = null; } public void resumeSuggestionOnLastComposedWord(final LastComposedWord lastComposedWord, final String previousWord) { mEvents.clear(); Collections.copy(mEvents, lastComposedWord.mEvents); mInputPointers.set(lastComposedWord.mInputPointers); mTypedWord.setLength(0); mCombinerChain.reset(); mTypedWord.append(lastComposedWord.mTypedWord); refreshSize(); mCapitalizedMode = lastComposedWord.mCapitalizedMode; mAutoCorrection = null; // This will be filled by the next call to updateSuggestion. mCursorPositionWithinWord = mCodePointSize; mRejectedBatchModeSuggestion = null; mIsResumed = true; mPreviousWordForSuggestion = previousWord; } public boolean isBatchMode() { return mIsBatchMode; } Loading Loading
java/src/com/android/inputmethod/latin/LastComposedWord.java +16 −3 Original line number Diff line number Diff line Loading @@ -38,25 +38,38 @@ public final class LastComposedWord { // or it may be exactly what the user typed if it's in the dictionary or the IME does not have // enough confidence in any suggestion to auto-correct (auto-correct to typed word). public static final int COMMIT_TYPE_DECIDED_WORD = 2; // COMMIT_TYPE_CANCEL_AUTO_CORRECT is used upon committing back the old word upon cancelling // an auto-correction. public static final int COMMIT_TYPE_CANCEL_AUTO_CORRECT = 3; public static final String NOT_A_SEPARATOR = ""; public final ArrayList<Event> mEvents; public final String mTypedWord; public final CharSequence mCommittedWord; public final String mSeparatorString; public final String mPrevWord; public final int mCapitalizedMode; public final InputPointers mInputPointers = new InputPointers(Constants.DICTIONARY_MAX_WORD_LENGTH); private boolean mActive; public static final LastComposedWord NOT_A_COMPOSED_WORD = new LastComposedWord("", "", NOT_A_SEPARATOR, null, WordComposer.CAPS_MODE_OFF); new LastComposedWord(new ArrayList<Event>(), null, "", "", NOT_A_SEPARATOR, null, WordComposer.CAPS_MODE_OFF); // Warning: this is using the passed objects as is and fully expects them to be // immutable. Do not fiddle with their contents after you passed them to this constructor. public LastComposedWord(final String typedWord, final CharSequence committedWord, final String separatorString, final String prevWord, final int capitalizedMode) { public LastComposedWord(final ArrayList<Event> events, final InputPointers inputPointers, final String typedWord, final CharSequence committedWord, final String separatorString, final String prevWord, final int capitalizedMode) { if (inputPointers != null) { mInputPointers.copy(inputPointers); } mTypedWord = typedWord; mEvents = new ArrayList<Event>(events); mCommittedWord = committedWord; mSeparatorString = separatorString; mActive = true; Loading
java/src/com/android/inputmethod/latin/WordComposer.java +21 −2 Original line number Diff line number Diff line Loading @@ -426,8 +426,9 @@ public final class WordComposer { // Note: currently, we come here whenever we commit a word. If it's a MANUAL_PICK // or a DECIDED_WORD we may cancel the commit later; otherwise, we should deactivate // the last composed word to ensure this does not happen. final LastComposedWord lastComposedWord = new LastComposedWord( mTypedWord.toString(), committedWord, separatorString, prevWord, mCapitalizedMode); final LastComposedWord lastComposedWord = new LastComposedWord(mEvents, mInputPointers, mTypedWord.toString(), committedWord, separatorString, prevWord, mCapitalizedMode); mInputPointers.reset(); if (type != LastComposedWord.COMMIT_TYPE_DECIDED_WORD && type != LastComposedWord.COMMIT_TYPE_MANUAL_PICK) { Loading Loading @@ -458,6 +459,24 @@ public final class WordComposer { public void discardPreviousWordForSuggestion() { mPreviousWordForSuggestion = null; } public void resumeSuggestionOnLastComposedWord(final LastComposedWord lastComposedWord, final String previousWord) { mEvents.clear(); Collections.copy(mEvents, lastComposedWord.mEvents); mInputPointers.set(lastComposedWord.mInputPointers); mTypedWord.setLength(0); mCombinerChain.reset(); mTypedWord.append(lastComposedWord.mTypedWord); refreshSize(); mCapitalizedMode = lastComposedWord.mCapitalizedMode; mAutoCorrection = null; // This will be filled by the next call to updateSuggestion. mCursorPositionWithinWord = mCodePointSize; mRejectedBatchModeSuggestion = null; mIsResumed = true; mPreviousWordForSuggestion = previousWord; } public boolean isBatchMode() { return mIsBatchMode; } Loading