Guard against wrong auto-correction cancellation (A6)

This deactivates the cancellation at each separator pressed while
not composing a word. The net effect is to fix
Bug: 5875776

Change-Id: I67aa3f842ddff250828c60596ad5a7e466c1ddaa
This commit is contained in:
Jean Chalard 2012-01-26 17:20:51 +09:00
parent b6b8729374
commit c7c152de4b

View file

@ -1274,6 +1274,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
mHandler.cancelDoubleSpacesTimer();
}
boolean didAutoCorrect = false;
switch (primaryCode) {
case Keyboard.CODE_DELETE:
mSpaceState = SPACE_STATE_NONE;
@ -1310,7 +1311,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
default:
mSpaceState = SPACE_STATE_NONE;
if (mSettingsValues.isWordSeparator(primaryCode)) {
handleSeparator(primaryCode, x, y, spaceState);
didAutoCorrect = handleSeparator(primaryCode, x, y, spaceState);
} else {
handleCharacter(primaryCode, keyCodes, x, y, spaceState);
}
@ -1319,6 +1320,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
switcher.onCodeInput(primaryCode);
// Reset after any single keystroke
if (!didAutoCorrect)
mLastComposedWord.deactivate();
mEnteredText = null;
}
@ -1562,7 +1565,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
}
private void handleSeparator(final int primaryCode, final int x, final int y,
// Returns true if we did an autocorrection, false otherwise.
private boolean handleSeparator(final int primaryCode, final int x, final int y,
final int spaceState) {
mVoiceProxy.handleSeparator();
mComposingStateManager.onFinishComposingText();
@ -1573,6 +1577,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
mHandler.postUpdateSuggestions();
}
boolean didAutoCorrect = false;
// Handle separator
final InputConnection ic = getCurrentInputConnection();
if (ic != null) {
@ -1587,6 +1592,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
&& !mInputAttributes.mInputTypeNoAutoCorrect;
if (shouldAutoCorrect && primaryCode != Keyboard.CODE_SINGLE_QUOTE) {
commitCurrentAutoCorrection(primaryCode, ic);
didAutoCorrect = true;
} else {
commitTyped(ic);
}
@ -1642,6 +1648,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
if (ic != null) {
ic.endBatchEdit();
}
return didAutoCorrect;
}
private CharSequence getTextWithUnderline(final CharSequence text) {