am dd5e1d15: Merge "Remove mCommittedWordSavedForSuggestionResuming (A4)"
* commit 'dd5e1d157b6bd8d7642dfd1dd855c97adc9f4b67': Remove mCommittedWordSavedForSuggestionResuming (A4)main
commit
7498ef4d0e
|
@ -2165,7 +2165,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
|
||||||
|
|
||||||
// "ic" must not be null
|
// "ic" must not be null
|
||||||
private void cancelAutoCorrect(final InputConnection ic) {
|
private void cancelAutoCorrect(final InputConnection ic) {
|
||||||
mWordComposer.resumeSuggestionOnKeptWord();
|
mWordComposer.resumeSuggestionOnLastComposedWord(mLastComposedWord);
|
||||||
final String originallyTypedWord = mWordComposer.getTypedWord();
|
final String originallyTypedWord = mWordComposer.getTypedWord();
|
||||||
final CharSequence autoCorrectedTo = mWordComposer.getAutoCorrectionOrNull();
|
final CharSequence autoCorrectedTo = mWordComposer.getAutoCorrectionOrNull();
|
||||||
final int cancelLength = autoCorrectedTo.length();
|
final int cancelLength = autoCorrectedTo.length();
|
||||||
|
@ -2205,7 +2205,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
|
||||||
// Note: in the interest of code simplicity, we may want to just call
|
// Note: in the interest of code simplicity, we may want to just call
|
||||||
// restartSuggestionsOnWordBeforeCursorIfAtEndOfWord instead, but retrieving
|
// restartSuggestionsOnWordBeforeCursorIfAtEndOfWord instead, but retrieving
|
||||||
// the old WordComposer allows to reuse the actual typed coordinates.
|
// the old WordComposer allows to reuse the actual typed coordinates.
|
||||||
mWordComposer.resumeSuggestionOnKeptWord();
|
mWordComposer.resumeSuggestionOnLastComposedWord(mLastComposedWord);
|
||||||
// We resume suggestion, and then we want to set the composing text to the content
|
// We resume suggestion, and then we want to set the composing text to the content
|
||||||
// of the word composer again. But since we just manually picked a word, there is
|
// of the word composer again. But since we just manually picked a word, there is
|
||||||
// no composing text at the moment, so we have to delete the word before we set a
|
// no composing text at the moment, so we have to delete the word before we set a
|
||||||
|
|
|
@ -67,8 +67,6 @@ public class WordComposer {
|
||||||
|
|
||||||
// The currently typing word. May not be null.
|
// The currently typing word. May not be null.
|
||||||
private CharacterStore mCurrentWord;
|
private CharacterStore mCurrentWord;
|
||||||
// The information being kept for resuming suggestion. May be null if wiped.
|
|
||||||
private CharacterStore mCommittedWordSavedForSuggestionResuming;
|
|
||||||
|
|
||||||
private int mCapsCount;
|
private int mCapsCount;
|
||||||
|
|
||||||
|
@ -83,7 +81,6 @@ public class WordComposer {
|
||||||
|
|
||||||
public WordComposer() {
|
public WordComposer() {
|
||||||
mCurrentWord = new CharacterStore();
|
mCurrentWord = new CharacterStore();
|
||||||
mCommittedWordSavedForSuggestionResuming = null;
|
|
||||||
mTrailingSingleQuotesCount = 0;
|
mTrailingSingleQuotesCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,7 +90,6 @@ public class WordComposer {
|
||||||
|
|
||||||
public void init(WordComposer source) {
|
public void init(WordComposer source) {
|
||||||
mCurrentWord = new CharacterStore(source.mCurrentWord);
|
mCurrentWord = new CharacterStore(source.mCurrentWord);
|
||||||
mCommittedWordSavedForSuggestionResuming = source.mCommittedWordSavedForSuggestionResuming;
|
|
||||||
mCapsCount = source.mCapsCount;
|
mCapsCount = source.mCapsCount;
|
||||||
mIsFirstCharCapitalized = source.mIsFirstCharCapitalized;
|
mIsFirstCharCapitalized = source.mIsFirstCharCapitalized;
|
||||||
mAutoCapitalized = source.mAutoCapitalized;
|
mAutoCapitalized = source.mAutoCapitalized;
|
||||||
|
@ -105,7 +101,6 @@ public class WordComposer {
|
||||||
*/
|
*/
|
||||||
public void reset() {
|
public void reset() {
|
||||||
mCurrentWord.reset();
|
mCurrentWord.reset();
|
||||||
mCommittedWordSavedForSuggestionResuming = null;
|
|
||||||
mCapsCount = 0;
|
mCapsCount = 0;
|
||||||
mIsFirstCharCapitalized = false;
|
mIsFirstCharCapitalized = false;
|
||||||
mTrailingSingleQuotesCount = 0;
|
mTrailingSingleQuotesCount = 0;
|
||||||
|
@ -201,7 +196,6 @@ public class WordComposer {
|
||||||
int codePoint = word.charAt(i);
|
int codePoint = word.charAt(i);
|
||||||
addKeyInfo(codePoint, keyboard, keyDetector);
|
addKeyInfo(codePoint, keyboard, keyDetector);
|
||||||
}
|
}
|
||||||
mCommittedWordSavedForSuggestionResuming = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -331,7 +325,6 @@ public class WordComposer {
|
||||||
|
|
||||||
// `type' should be one of the LastComposedWord.COMMIT_TYPE_* constants above.
|
// `type' should be one of the LastComposedWord.COMMIT_TYPE_* constants above.
|
||||||
public LastComposedWord commitWord(final int type) {
|
public LastComposedWord commitWord(final int type) {
|
||||||
mCommittedWordSavedForSuggestionResuming = mCurrentWord;
|
|
||||||
// Note: currently, we come here whenever we commit a word. If it's any *other* kind than
|
// Note: currently, we come here whenever we commit a word. If it's any *other* kind than
|
||||||
// DECIDED_WORD, we should reset mAutoCorrection so that we don't attempt to cancel later.
|
// DECIDED_WORD, we should reset mAutoCorrection so that we don't attempt to cancel later.
|
||||||
// If it's a DECIDED_WORD, it may be an actual auto-correction by the IME, or what the user
|
// If it's a DECIDED_WORD, it may be an actual auto-correction by the IME, or what the user
|
||||||
|
@ -339,29 +332,26 @@ public class WordComposer {
|
||||||
// Ideally we would also null it when it was a DECIDED_WORD that was not an auto-correct.
|
// Ideally we would also null it when it was a DECIDED_WORD that was not an auto-correct.
|
||||||
// As it happens these two cases should behave differently, because the former can be
|
// As it happens these two cases should behave differently, because the former can be
|
||||||
// canceled while the latter can't. Currently, we figure this out in
|
// canceled while the latter can't. Currently, we figure this out in
|
||||||
// #didAutoCorrectToAnotherWord with #equals(). It would be marginally cleaner to do it
|
// LastComposedWord#didAutoCorrectToAnotherWord with #equals(). It would be marginally
|
||||||
// here, but it would be slower (since we would #equals() for each commit, instead of
|
// cleaner to do it here, but it would be slower (since we would #equals() for each commit,
|
||||||
// only on cancel), and ultimately we want to figure it out even earlier anyway.
|
// instead of only on cancel), and ultimately we want to figure it out even earlier anyway.
|
||||||
if (type != LastComposedWord.COMMIT_TYPE_DECIDED_WORD) {
|
|
||||||
// Only ever revert an auto-correct.
|
|
||||||
mCommittedWordSavedForSuggestionResuming.mAutoCorrection = null;
|
|
||||||
}
|
|
||||||
final LastComposedWord lastComposedWord = new LastComposedWord(type, mCurrentWord.mCodes,
|
final LastComposedWord lastComposedWord = new LastComposedWord(type, mCurrentWord.mCodes,
|
||||||
mCurrentWord.mXCoordinates, mCurrentWord.mYCoordinates,
|
mCurrentWord.mXCoordinates, mCurrentWord.mYCoordinates,
|
||||||
mCurrentWord.mTypedWord.toString(),
|
mCurrentWord.mTypedWord.toString(),
|
||||||
null == mCurrentWord.mAutoCorrection
|
(type != LastComposedWord.COMMIT_TYPE_DECIDED_WORD)
|
||||||
? null : mCurrentWord.mAutoCorrection.toString());
|
|| (null == mCurrentWord.mAutoCorrection)
|
||||||
|
? null : mCurrentWord.mAutoCorrection.toString());
|
||||||
// TODO: improve performance by swapping buffers instead of creating a new object.
|
// TODO: improve performance by swapping buffers instead of creating a new object.
|
||||||
mCurrentWord = new CharacterStore();
|
mCurrentWord = new CharacterStore();
|
||||||
return lastComposedWord;
|
return lastComposedWord;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasWordKeptForSuggestionResuming() {
|
public void resumeSuggestionOnLastComposedWord(final LastComposedWord lastComposedWord) {
|
||||||
return null != mCommittedWordSavedForSuggestionResuming;
|
mCurrentWord.mCodes = lastComposedWord.mCodes;
|
||||||
}
|
mCurrentWord.mXCoordinates = lastComposedWord.mXCoordinates;
|
||||||
|
mCurrentWord.mYCoordinates = lastComposedWord.mYCoordinates;
|
||||||
public void resumeSuggestionOnKeptWord() {
|
mCurrentWord.mTypedWord.setLength(0);
|
||||||
mCurrentWord = mCommittedWordSavedForSuggestionResuming;
|
mCurrentWord.mTypedWord.append(lastComposedWord.mTypedWord);
|
||||||
mCommittedWordSavedForSuggestionResuming = null;
|
mCurrentWord.mAutoCorrection = lastComposedWord.mAutoCorrection;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue