* commit 'be0e013be879aec19197a9e1b0a1d2631a8d4c79': Reject a previously user-refused suggestion.
This commit is contained in:
commit
ae73133188
3 changed files with 27 additions and 0 deletions
|
@ -1747,7 +1747,9 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
|
||||||
ResearchLogger.getInstance().uncommitCurrentLogUnit(
|
ResearchLogger.getInstance().uncommitCurrentLogUnit(
|
||||||
word, false /* dumpCurrentLogUnit */);
|
word, false /* dumpCurrentLogUnit */);
|
||||||
}
|
}
|
||||||
|
final String rejectedSuggestion = mWordComposer.getTypedWord();
|
||||||
mWordComposer.reset();
|
mWordComposer.reset();
|
||||||
|
mWordComposer.setRejectedBatchModeSuggestion(rejectedSuggestion);
|
||||||
} else {
|
} else {
|
||||||
mWordComposer.deleteLast();
|
mWordComposer.deleteLast();
|
||||||
}
|
}
|
||||||
|
|
|
@ -334,6 +334,11 @@ public final class Suggest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (suggestionsContainer.size() > 1 && TextUtils.equals(suggestionsContainer.get(0).mWord,
|
||||||
|
wordComposer.getRejectedBatchModeSuggestion())) {
|
||||||
|
final SuggestedWordInfo rejected = suggestionsContainer.remove(0);
|
||||||
|
suggestionsContainer.add(1, rejected);
|
||||||
|
}
|
||||||
SuggestedWordInfo.removeDups(suggestionsContainer);
|
SuggestedWordInfo.removeDups(suggestionsContainer);
|
||||||
// In the batch input mode, the most relevant suggested word should act as a "typed word"
|
// In the batch input mode, the most relevant suggested word should act as a "typed word"
|
||||||
// (typedWordValid=true), not as an "auto correct word" (willAutoCorrect=false).
|
// (typedWordValid=true), not as an "auto correct word" (willAutoCorrect=false).
|
||||||
|
|
|
@ -42,6 +42,13 @@ public final class WordComposer {
|
||||||
private String mAutoCorrection;
|
private String mAutoCorrection;
|
||||||
private boolean mIsResumed;
|
private boolean mIsResumed;
|
||||||
private boolean mIsBatchMode;
|
private boolean mIsBatchMode;
|
||||||
|
// A memory of the last rejected batch mode suggestion, if any. This goes like this: the user
|
||||||
|
// gestures a word, is displeased with the results and hits backspace, then gestures again.
|
||||||
|
// At the very least we should avoid re-suggesting the same thing, and to do that we memorize
|
||||||
|
// the rejected suggestion in this variable.
|
||||||
|
// TODO: this should be done in a comprehensive way by the User History feature instead of
|
||||||
|
// as an ad-hockery here.
|
||||||
|
private String mRejectedBatchModeSuggestion;
|
||||||
|
|
||||||
// Cache these values for performance
|
// Cache these values for performance
|
||||||
private int mCapsCount;
|
private int mCapsCount;
|
||||||
|
@ -64,6 +71,7 @@ public final class WordComposer {
|
||||||
mIsResumed = false;
|
mIsResumed = false;
|
||||||
mIsBatchMode = false;
|
mIsBatchMode = false;
|
||||||
mCursorPositionWithinWord = 0;
|
mCursorPositionWithinWord = 0;
|
||||||
|
mRejectedBatchModeSuggestion = null;
|
||||||
refreshSize();
|
refreshSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,6 +87,7 @@ public final class WordComposer {
|
||||||
mIsResumed = source.mIsResumed;
|
mIsResumed = source.mIsResumed;
|
||||||
mIsBatchMode = source.mIsBatchMode;
|
mIsBatchMode = source.mIsBatchMode;
|
||||||
mCursorPositionWithinWord = source.mCursorPositionWithinWord;
|
mCursorPositionWithinWord = source.mCursorPositionWithinWord;
|
||||||
|
mRejectedBatchModeSuggestion = source.mRejectedBatchModeSuggestion;
|
||||||
refreshSize();
|
refreshSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,6 +104,7 @@ public final class WordComposer {
|
||||||
mIsResumed = false;
|
mIsResumed = false;
|
||||||
mIsBatchMode = false;
|
mIsBatchMode = false;
|
||||||
mCursorPositionWithinWord = 0;
|
mCursorPositionWithinWord = 0;
|
||||||
|
mRejectedBatchModeSuggestion = null;
|
||||||
refreshSize();
|
refreshSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -384,6 +394,7 @@ public final class WordComposer {
|
||||||
mAutoCorrection = null;
|
mAutoCorrection = null;
|
||||||
mCursorPositionWithinWord = 0;
|
mCursorPositionWithinWord = 0;
|
||||||
mIsResumed = false;
|
mIsResumed = false;
|
||||||
|
mRejectedBatchModeSuggestion = null;
|
||||||
return lastComposedWord;
|
return lastComposedWord;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -396,10 +407,19 @@ public final class WordComposer {
|
||||||
mCapitalizedMode = lastComposedWord.mCapitalizedMode;
|
mCapitalizedMode = lastComposedWord.mCapitalizedMode;
|
||||||
mAutoCorrection = null; // This will be filled by the next call to updateSuggestion.
|
mAutoCorrection = null; // This will be filled by the next call to updateSuggestion.
|
||||||
mCursorPositionWithinWord = mCodePointSize;
|
mCursorPositionWithinWord = mCodePointSize;
|
||||||
|
mRejectedBatchModeSuggestion = null;
|
||||||
mIsResumed = true;
|
mIsResumed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isBatchMode() {
|
public boolean isBatchMode() {
|
||||||
return mIsBatchMode;
|
return mIsBatchMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setRejectedBatchModeSuggestion(final String rejectedSuggestion) {
|
||||||
|
mRejectedBatchModeSuggestion = rejectedSuggestion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRejectedBatchModeSuggestion() {
|
||||||
|
return mRejectedBatchModeSuggestion;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue