mirror of
https://gitlab.futo.org/keyboard/latinime.git
synced 2024-09-28 14:54:30 +01:00
[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
This commit is contained in:
parent
005d2454c9
commit
1d2e4f9dcc
@ -1538,6 +1538,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// [IL] TODO: remove the second argument
|
||||||
public void unsetIsAutoCorrectionIndicatorOnAndCallShowSuggestionStrip(
|
public void unsetIsAutoCorrectionIndicatorOnAndCallShowSuggestionStrip(
|
||||||
final SuggestedWords suggestedWords, final String typedWord) {
|
final SuggestedWords suggestedWords, final String typedWord) {
|
||||||
// Note that it's very important here that suggestedWords.mWillAutoCorrect is false.
|
// Note that it's very important here that suggestedWords.mWillAutoCorrect is false.
|
||||||
@ -1547,7 +1548,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||||||
// the text to adapt it.
|
// the text to adapt it.
|
||||||
// TODO: remove mIsAutoCorrectionIndicatorOn (see comment on definition)
|
// TODO: remove mIsAutoCorrectionIndicatorOn (see comment on definition)
|
||||||
mInputLogic.mIsAutoCorrectionIndicatorOn = false;
|
mInputLogic.mIsAutoCorrectionIndicatorOn = false;
|
||||||
mHandler.showSuggestionStripWithTypedWord(suggestedWords, typedWord);
|
mHandler.showSuggestionStripWithTypedWord(suggestedWords, suggestedWords.mTypedWord);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Make this private
|
// TODO: Make this private
|
||||||
|
@ -68,6 +68,21 @@ public final class SuggestedWords {
|
|||||||
final boolean isObsoleteSuggestions,
|
final boolean isObsoleteSuggestions,
|
||||||
final boolean isPrediction,
|
final boolean isPrediction,
|
||||||
final int sequenceNumber) {
|
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<SuggestedWordInfo> suggestedWordInfoList,
|
||||||
|
final String typedWord,
|
||||||
|
final boolean typedWordValid,
|
||||||
|
final boolean willAutoCorrect,
|
||||||
|
final boolean isPunctuationSuggestions,
|
||||||
|
final boolean isObsoleteSuggestions,
|
||||||
|
final boolean isPrediction,
|
||||||
|
final int sequenceNumber) {
|
||||||
mSuggestedWordInfoList = suggestedWordInfoList;
|
mSuggestedWordInfoList = suggestedWordInfoList;
|
||||||
mTypedWordValid = typedWordValid;
|
mTypedWordValid = typedWordValid;
|
||||||
mWillAutoCorrect = willAutoCorrect;
|
mWillAutoCorrect = willAutoCorrect;
|
||||||
@ -75,7 +90,7 @@ public final class SuggestedWords {
|
|||||||
mIsObsoleteSuggestions = isObsoleteSuggestions;
|
mIsObsoleteSuggestions = isObsoleteSuggestions;
|
||||||
mIsPrediction = isPrediction;
|
mIsPrediction = isPrediction;
|
||||||
mSequenceNumber = sequenceNumber;
|
mSequenceNumber = sequenceNumber;
|
||||||
mTypedWord = suggestedWordInfoList.isEmpty() ? null : getWord(INDEX_OF_TYPED_WORD);
|
mTypedWord = typedWord;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isEmpty() {
|
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.
|
// words from the member ArrayList as some other parties may expect the object to never change.
|
||||||
public SuggestedWords getSuggestedWordsExcludingTypedWord() {
|
public SuggestedWords getSuggestedWordsExcludingTypedWord() {
|
||||||
final ArrayList<SuggestedWordInfo> newSuggestions = CollectionUtils.newArrayList();
|
final ArrayList<SuggestedWordInfo> newSuggestions = CollectionUtils.newArrayList();
|
||||||
|
String typedWord = null;
|
||||||
for (int i = 0; i < mSuggestedWordInfoList.size(); ++i) {
|
for (int i = 0; i < mSuggestedWordInfoList.size(); ++i) {
|
||||||
final SuggestedWordInfo info = mSuggestedWordInfoList.get(i);
|
final SuggestedWordInfo info = mSuggestedWordInfoList.get(i);
|
||||||
if (SuggestedWordInfo.KIND_TYPED != info.mKind) {
|
if (SuggestedWordInfo.KIND_TYPED != info.mKind) {
|
||||||
newSuggestions.add(info);
|
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,
|
// 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.
|
// 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,
|
false /* willAutoCorrect */, mIsPunctuationSuggestions, mIsObsoleteSuggestions,
|
||||||
mIsPrediction);
|
mIsPrediction, NOT_A_SEQUENCE_NUMBER);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Creates a new SuggestedWordInfo from the currently suggested words that removes all but the
|
// Creates a new SuggestedWordInfo from the currently suggested words that removes all but the
|
||||||
|
@ -1225,11 +1225,10 @@ public final class InputLogic {
|
|||||||
} else {
|
} else {
|
||||||
// We found suggestion spans in the word. We'll create the SuggestedWords out of
|
// We found suggestion spans in the word. We'll create the SuggestedWords out of
|
||||||
// them, and make willAutoCorrect false.
|
// them, and make willAutoCorrect false.
|
||||||
final SuggestedWords suggestedWords = new SuggestedWords(suggestions,
|
final SuggestedWords suggestedWords = new SuggestedWords(suggestions, typedWord,
|
||||||
true /* typedWordValid */, false /* willAutoCorrect */,
|
true /* typedWordValid */, false /* willAutoCorrect */,
|
||||||
false /* isPunctuationSuggestions */, false /* isObsoleteSuggestions */,
|
false /* isPunctuationSuggestions */, false /* isObsoleteSuggestions */,
|
||||||
false /* isPrediction */);
|
false /* isPrediction */, SuggestedWords.NOT_A_SEQUENCE_NUMBER);
|
||||||
// We need to pass typedWord because mWordComposer.mTypedWord may differ from typedWord.
|
|
||||||
mLatinIME.unsetIsAutoCorrectionIndicatorOnAndCallShowSuggestionStrip(suggestedWords,
|
mLatinIME.unsetIsAutoCorrectionIndicatorOnAndCallShowSuggestionStrip(suggestedWords,
|
||||||
typedWord);
|
typedWord);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user