Unify space-adding on gestures.

This is much simpler, and more correct.

Bug: 8808497
Change-Id: I7a56bf9d6d9fb481f898b7a9f5898a86c11b34c0
main
Jean Chalard 2013-05-07 17:07:47 +09:00
parent 4ddf1e47a7
commit e8b9b35471
1 changed files with 7 additions and 15 deletions

View File

@ -1577,21 +1577,11 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
commitTyped(LastComposedWord.NOT_A_SEPARATOR); commitTyped(LastComposedWord.NOT_A_SEPARATOR);
} }
mExpectingUpdateSelection = true; mExpectingUpdateSelection = true;
// The following is necessary for the case where the user typed something but didn't }
// manual pick it and didn't input any separator: we want to put a space between what final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
// has been entered and the coming gesture input result, so we go into phantom space if (Character.isLetterOrDigit(codePointBeforeCursor)
// state, which will be promoted to a space when the gesture result is committed. But if || mSettings.getCurrent().isUsuallyFollowedBySpace(codePointBeforeCursor)) {
// the current input ends in a word connector on the other hand, then we want to have mSpaceState = SPACE_STATE_PHANTOM;
// the next input stick to the current input so we don't switch to phantom space state.
if (!mSettings.getCurrent().isWordConnector(lastChar)) {
mSpaceState = SPACE_STATE_PHANTOM;
}
} else {
final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
if (Character.isLetter(codePointBeforeCursor)
|| mSettings.getCurrent().isUsuallyFollowedBySpace(codePointBeforeCursor)) {
mSpaceState = SPACE_STATE_PHANTOM;
}
} }
mConnection.endBatchEdit(); mConnection.endBatchEdit();
mWordComposer.setCapitalizedModeAtStartComposingTime(getActualCapsMode()); mWordComposer.setCapitalizedModeAtStartComposingTime(getActualCapsMode());
@ -1905,6 +1895,8 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
final int y, final int spaceState) { final int y, final int spaceState) {
boolean isComposingWord = mWordComposer.isComposingWord(); boolean isComposingWord = mWordComposer.isComposingWord();
// TODO: remove isWordConnector() and use isUsuallyFollowedBySpace() instead.
// See onStartBatchInput() to see how to do it.
if (SPACE_STATE_PHANTOM == spaceState && if (SPACE_STATE_PHANTOM == spaceState &&
!mSettings.getCurrent().isWordConnector(primaryCode)) { !mSettings.getCurrent().isWordConnector(primaryCode)) {
if (isComposingWord) { if (isComposingWord) {