Clear composing text when the auto-corrected word is reverted

Bug: 3363133

Change-Id: Ib7582ad354ba16eb8ebc9f0b4f51c8ec3790f578
main
Tadashi G. Takaoka 2011-01-18 15:48:29 +09:00
parent d5a6b910e8
commit 30be3f9845
1 changed files with 10 additions and 6 deletions

View File

@ -1805,7 +1805,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
final int length = mComposing.length(); final int length = mComposing.length();
if (!mHasValidSuggestions && length > 0) { if (!mHasValidSuggestions && length > 0) {
final InputConnection ic = getCurrentInputConnection(); final InputConnection ic = getCurrentInputConnection();
mHasValidSuggestions = true;
mJustReverted = true; mJustReverted = true;
final CharSequence punctuation = ic.getTextBeforeCursor(1, 0); final CharSequence punctuation = ic.getTextBeforeCursor(1, 0);
if (deleteChar) ic.deleteSurroundingText(1, 0); if (deleteChar) ic.deleteSurroundingText(1, 0);
@ -1815,14 +1814,19 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
toDelete--; toDelete--;
} }
ic.deleteSurroundingText(toDelete, 0); ic.deleteSurroundingText(toDelete, 0);
if (deleteChar) { // Re-insert punctuation only when the deleted character was word separator and the
// composing text wasn't equal to the auto-corrected text.
if (deleteChar
&& !TextUtils.isEmpty(punctuation) && isWordSeparator(punctuation.charAt(0))
&& !TextUtils.equals(mComposing, toTheLeft)) {
ic.commitText(mComposing, 1); ic.commitText(mComposing, 1);
TextEntryState.acceptedTyped(mComposing); TextEntryState.acceptedTyped(mComposing);
if (!TextUtils.isEmpty(punctuation) && isWordSeparator(punctuation.charAt(0))) { ic.commitText(punctuation, 1);
ic.commitText(punctuation, 1); TextEntryState.typedCharacter(punctuation.charAt(0), true);
TextEntryState.typedCharacter(punctuation.charAt(0), true); // Clear composing text
} mComposing.setLength(0);
} else { } else {
mHasValidSuggestions = true;
ic.setComposingText(mComposing, 1); ic.setComposingText(mComposing, 1);
TextEntryState.backspace(); TextEntryState.backspace();
} }