Merge "Unify space-adding on gestures."

main
Jean Chalard 2013-05-07 11:51:01 +00:00 committed by Android (Google) Code Review
commit 2afe88b8d7
1 changed files with 7 additions and 15 deletions

View File

@ -1577,22 +1577,12 @@ 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
// has been entered and the coming gesture input result, so we go into phantom space
// state, which will be promoted to a space when the gesture result is committed. But if
// the current input ends in a word connector on the other hand, then we want to have
// 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(); final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
if (Character.isLetter(codePointBeforeCursor) if (Character.isLetterOrDigit(codePointBeforeCursor)
|| mSettings.getCurrent().isUsuallyFollowedBySpace(codePointBeforeCursor)) { || mSettings.getCurrent().isUsuallyFollowedBySpace(codePointBeforeCursor)) {
mSpaceState = SPACE_STATE_PHANTOM; 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) {