From 1d2e4f9dccfba925dda75a1ded569c3b62f639ed Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Fri, 24 Jan 2014 22:33:44 +0900 Subject: [IL103] Save the typed word separately in SuggestedWords. This helps managing the cases where the typed word is not in the suggestions. This happens during recorrection. Bug: 8636060 Change-Id: I6784feb793cae96272a7f1d123a0e3bbb8f03143 --- .../android/inputmethod/latin/SuggestedWords.java | 25 +++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'java/src/com/android/inputmethod/latin/SuggestedWords.java') diff --git a/java/src/com/android/inputmethod/latin/SuggestedWords.java b/java/src/com/android/inputmethod/latin/SuggestedWords.java index 982a97a5e..dbaf822e4 100644 --- a/java/src/com/android/inputmethod/latin/SuggestedWords.java +++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java @@ -68,6 +68,21 @@ public final class SuggestedWords { final boolean isObsoleteSuggestions, final boolean isPrediction, final int sequenceNumber) { + this(suggestedWordInfoList, + suggestedWordInfoList.isEmpty() ? null + : suggestedWordInfoList.get(INDEX_OF_TYPED_WORD).mWord, + typedWordValid, willAutoCorrect, isPunctuationSuggestions, + isObsoleteSuggestions, isPrediction, sequenceNumber); + } + + public SuggestedWords(final ArrayList suggestedWordInfoList, + final String typedWord, + final boolean typedWordValid, + final boolean willAutoCorrect, + final boolean isPunctuationSuggestions, + final boolean isObsoleteSuggestions, + final boolean isPrediction, + final int sequenceNumber) { mSuggestedWordInfoList = suggestedWordInfoList; mTypedWordValid = typedWordValid; mWillAutoCorrect = willAutoCorrect; @@ -75,7 +90,7 @@ public final class SuggestedWords { mIsObsoleteSuggestions = isObsoleteSuggestions; mIsPrediction = isPrediction; mSequenceNumber = sequenceNumber; - mTypedWord = suggestedWordInfoList.isEmpty() ? null : getWord(INDEX_OF_TYPED_WORD); + mTypedWord = typedWord; } public boolean isEmpty() { @@ -279,17 +294,21 @@ public final class SuggestedWords { // words from the member ArrayList as some other parties may expect the object to never change. public SuggestedWords getSuggestedWordsExcludingTypedWord() { final ArrayList newSuggestions = CollectionUtils.newArrayList(); + String typedWord = null; for (int i = 0; i < mSuggestedWordInfoList.size(); ++i) { final SuggestedWordInfo info = mSuggestedWordInfoList.get(i); if (SuggestedWordInfo.KIND_TYPED != info.mKind) { newSuggestions.add(info); + } else { + assert(null == typedWord); + typedWord = info.mWord; } } // We should never autocorrect, so we say the typed word is valid. Also, in this case, // no auto-correction should take place hence willAutoCorrect = false. - return new SuggestedWords(newSuggestions, true /* typedWordValid */, + return new SuggestedWords(newSuggestions, typedWord, true /* typedWordValid */, false /* willAutoCorrect */, mIsPunctuationSuggestions, mIsObsoleteSuggestions, - mIsPrediction); + mIsPrediction, NOT_A_SEQUENCE_NUMBER); } // Creates a new SuggestedWordInfo from the currently suggested words that removes all but the -- cgit v1.2.3-83-g751a