From f960eb186d63aa4f9fecd22f036fc8724d39d949 Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Tue, 23 Oct 2012 11:30:39 +0900 Subject: [PATCH] Don't put spaces after characters that don't take one Bug: 7393639 Change-Id: I1245a7b5077e554642838d6856ce269ca7f91988 --- java/src/com/android/inputmethod/latin/LatinIME.java | 6 +++++- java/src/com/android/inputmethod/latin/SettingsValues.java | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index c1b1751f1..1ade3c422 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -1431,8 +1431,12 @@ public final class LatinIME extends InputMethodService implements KeyboardAction mSpaceState = SPACE_STATE_PHANTOM; } else { final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor(); + // TODO: reverse this logic. We should have the means to determine whether a character + // should usually be followed by a space, and it should be more readable. if (Constants.NOT_A_CODE != codePointBeforeCursor - && !Character.isWhitespace(codePointBeforeCursor)) { + && !Character.isWhitespace(codePointBeforeCursor) + && !mCurrentSettings.isPhantomSpacePromotingSymbol(codePointBeforeCursor) + && !mCurrentSettings.isWeakSpaceStripper(codePointBeforeCursor)) { mSpaceState = SPACE_STATE_PHANTOM; } } diff --git a/java/src/com/android/inputmethod/latin/SettingsValues.java b/java/src/com/android/inputmethod/latin/SettingsValues.java index 1c5864bce..2a778aa0d 100644 --- a/java/src/com/android/inputmethod/latin/SettingsValues.java +++ b/java/src/com/android/inputmethod/latin/SettingsValues.java @@ -254,11 +254,13 @@ public final class SettingsValues { return mSymbolsExcludedFromWordSeparators.contains(String.valueOf((char)code)); } + // TODO: use "Phantom" instead of "Weak" in this method name public boolean isWeakSpaceStripper(final int code) { // TODO: this does not work if the code does not fit in a char return mWeakSpaceStrippers.contains(String.valueOf((char)code)); } + // TODO: use "Phantom" instead of "Weak" in this method name public boolean isWeakSpaceSwapper(final int code) { // TODO: this does not work if the code does not fit in a char return mWeakSpaceSwappers.contains(String.valueOf((char)code));