aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java43
-rw-r--r--java/src/com/android/inputmethod/latin/WordComposer.java4
2 files changed, 19 insertions, 28 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 944042a9a..f24dc3fe3 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -198,7 +198,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
private boolean mIsUserDictionaryAvailable;
private WordComposer mWordComposer = new WordComposer();
- private boolean mHasUncommittedTypedChars;
private int mCorrectionMode;
private String mWordSavedForAutoCorrectCancellation;
@@ -759,7 +758,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
inputView.closing();
mEnteredText = null;
mWordComposer.reset();
- mHasUncommittedTypedChars = false;
mDeleteCount = 0;
mSpaceState = SPACE_STATE_NONE;
@@ -863,11 +861,10 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
// newly inserted punctuation.
mSpaceState = SPACE_STATE_NONE;
}
- if (((mWordComposer.size() > 0 && mHasUncommittedTypedChars)
+ if (((mWordComposer.isComposingWord())
|| mVoiceProxy.isVoiceInputHighlighted())
&& (selectionChanged || candidatesCleared)) {
mWordComposer.reset();
- mHasUncommittedTypedChars = false;
updateSuggestions();
final InputConnection ic = getCurrentInputConnection();
if (ic != null) {
@@ -875,7 +872,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
mComposingStateManager.onFinishComposingText();
mVoiceProxy.setVoiceInputHighlighted(false);
- } else if (!mHasUncommittedTypedChars) {
+ } else if (!mWordComposer.isComposingWord()) {
updateSuggestions();
}
}
@@ -1076,8 +1073,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
public void commitTyped(final InputConnection ic) {
- if (!mHasUncommittedTypedChars) return;
- mHasUncommittedTypedChars = false;
+ if (!mWordComposer.isComposingWord()) return;
final CharSequence typedWord = mWordComposer.getTypedWord();
mWordComposer.onCommitWord();
if (typedWord.length() > 0) {
@@ -1352,18 +1348,18 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
return;
}
- if (mHasUncommittedTypedChars) {
+ if (mWordComposer.isComposingWord()) {
final int length = mWordComposer.size();
if (length > 0) {
mWordComposer.deleteLast();
ic.setComposingText(getTextWithUnderline(mWordComposer.getTypedWord()), 1);
- if (mWordComposer.size() == 0) {
- mHasUncommittedTypedChars = false;
- // Remaining size equals zero means we just erased the last character of the
- // word, so we can show bigrams.
+ // If we have deleted the last remaining character of a word, then we are not
+ // isComposingWord() any more.
+ if (!mWordComposer.isComposingWord()) {
+ // Not composing word any more, so we can show bigrams.
mHandler.postUpdateBigramPredictions();
} else {
- // length > 1, so we still have letters to deduce a suggestion from.
+ // Still composing a word, so we still have letters to deduce a suggestion from.
mHandler.postUpdateSuggestions();
}
} else {
@@ -1452,7 +1448,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
if (null != ic) removeTrailingSpaceWhileInBatchEdit(ic);
}
- boolean isComposingWord = mHasUncommittedTypedChars;
+ boolean isComposingWord = mWordComposer.isComposingWord();
int code = primaryCode;
if ((isAlphabet(code) || mSettingsValues.isSymbolExcludedFromWordSeparators(code))
&& isSuggestionsRequested() && !isCursorTouchingWord()) {
@@ -1489,7 +1485,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
}
if (isComposingWord) {
- mHasUncommittedTypedChars = true;
mWordComposer.add(code, keyCodes, x, y);
if (ic != null) {
// If it's the first letter, make note of auto-caps state
@@ -1535,7 +1530,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
// Reset the saved word in all cases. If this separator causes an autocorrection,
// it will overwrite this null with the actual word we need to save.
mWordSavedForAutoCorrectCancellation = null;
- if (mHasUncommittedTypedChars) {
+ if (mWordComposer.isComposingWord()) {
// In certain languages where single quote is a separator, it's better
// not to auto correct, but accept the typed word. For instance,
// in Italian dov' should not be expanded to dove' because the elision
@@ -1710,7 +1705,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
mHandler.cancelUpdateSuggestions();
mHandler.cancelUpdateBigramPredictions();
- if (!mHasUncommittedTypedChars) {
+ if (!mWordComposer.isComposingWord()) {
setPunctuationSuggestions();
return;
}
@@ -1885,11 +1880,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
return;
}
- if (!mHasUncommittedTypedChars) {
- // If we are not composing a word, then it was a suggestion inferred from
- // context - no user input. We should reset the word composer.
- mWordComposer.reset();
- }
mExpectingUpdateSelection = true;
commitBestWord(suggestion);
// Add the word to the auto dictionary if it's not a known word
@@ -1899,8 +1889,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
} else {
addToOnlyBigramDictionary(suggestion, 1);
}
- // TODO: the following is fishy, because if !mHasUncommittedTypedChars we are
- // going to log an empty string
+ // TODO: the following is fishy, because it seems there may be cases where we are not
+ // composing a word at all. Maybe throw an exception if !mWordComposer.isComposingWord() ?
LatinImeLogger.logOnManualSuggestion(mWordComposer.getTypedWord().toString(),
suggestion.toString(), index, suggestions.mWords);
// Follow it with a space
@@ -1965,7 +1955,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
ic.commitText(bestWord, 1);
}
}
- mHasUncommittedTypedChars = false;
mWordComposer.onCommitWord();
}
@@ -2109,7 +2098,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
private void restartSuggestionsOnWordBeforeCursor(final InputConnection ic,
final CharSequence word) {
mWordComposer.setComposingWord(word, mKeyboardSwitcher.getLatinKeyboard());
- mHasUncommittedTypedChars = true;
mComposingStateManager.onStartComposingText();
ic.deleteSurroundingText(word.length(), 0);
ic.setComposingText(word, 1);
@@ -2168,7 +2156,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
// Note: in the interest of code simplicity, we may want to just call
// restartSuggestionsOnWordBeforeCursorIfAtEndOfWord instead, but retrieving
// the old WordComposer allows to reuse the actual typed coordinates.
- mHasUncommittedTypedChars = true;
mWordComposer.resumeSuggestionOnKeptWord();
ic.setComposingText(mWordComposer.getTypedWord(), 1);
mHandler.cancelUpdateBigramPredictions();
@@ -2456,7 +2443,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
p.println(" Keyboard mode = " + keyboardMode);
p.println(" mIsSuggestionsRequested=" + mInputAttributes.mIsSettingsSuggestionStripOn);
p.println(" mCorrectionMode=" + mCorrectionMode);
- p.println(" mHasUncommittedTypedChars=" + mHasUncommittedTypedChars);
+ p.println(" isComposingWord=" + mWordComposer.isComposingWord());
p.println(" mAutoCorrectEnabled=" + mSettingsValues.mAutoCorrectEnabled);
p.println(" mSoundOn=" + mSettingsValues.mSoundOn);
p.println(" mVibrateOn=" + mSettingsValues.mVibrateOn);
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index c0204c2a6..b88e73fc7 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -120,6 +120,10 @@ public class WordComposer {
return mCurrentWord.mTypedWord.length();
}
+ public final boolean isComposingWord() {
+ return size() > 0;
+ }
+
/**
* Returns the codes at a particular position in the word.
* @param index the position in the word