diff options
author | 2012-03-06 14:00:34 +0900 | |
---|---|---|
committer | 2012-03-06 14:00:34 +0900 | |
commit | 00ed3be95cee472685bcba1ea861ac75c61db690 (patch) | |
tree | a4c1194bcd721eb1bddf10365f926584d38c41bb /java/src | |
parent | e31060dc776246b64a9081fedf162babbe87064c (diff) | |
download | latinime-00ed3be95cee472685bcba1ea861ac75c61db690.tar.gz latinime-00ed3be95cee472685bcba1ea861ac75c61db690.tar.xz latinime-00ed3be95cee472685bcba1ea861ac75c61db690.zip |
Correct special space handling of punctuation
This fixes two defects:
- One where some separators should promote a phantom space to
a real space. This bug had a unit test but wasn't tracked.
- One where French punctuations would behave incorrectly. Tracked
Bug: 6113693
Change-Id: Ia7f86fc960e00141757632ab2c9bce9168dd6966
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/latin/LatinIME.java | 4 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/SettingsValues.java | 9 |
2 files changed, 12 insertions, 1 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 64b9f3364..742328256 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -1610,6 +1610,10 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar final boolean swapWeakSpace = maybeStripSpaceWhileInBatchEdit(ic, primaryCode, spaceState, KeyboardActionListener.SUGGESTION_STRIP_COORDINATE == x); + if (SPACE_STATE_PHANTOM == spaceState && + mSettingsValues.isPhantomSpacePromotingSymbol(primaryCode)) { + sendKeyCodePoint(Keyboard.CODE_SPACE); + } sendKeyCodePoint(primaryCode); if (Keyboard.CODE_SPACE == primaryCode) { diff --git a/java/src/com/android/inputmethod/latin/SettingsValues.java b/java/src/com/android/inputmethod/latin/SettingsValues.java index d123b608f..6d65a74c8 100644 --- a/java/src/com/android/inputmethod/latin/SettingsValues.java +++ b/java/src/com/android/inputmethod/latin/SettingsValues.java @@ -37,6 +37,7 @@ public class SettingsValues { public final int mDelayUpdateOldSuggestions; public final String mWeakSpaceStrippers; public final String mWeakSpaceSwappers; + private final String mPhantomSpacePromotingSymbols; private final String mSuggestPuncs; public final SuggestedWords mSuggestPuncList; public final SuggestedWords mSuggestPuncOutputTextList; @@ -91,6 +92,7 @@ public class SettingsValues { mDelayUpdateOldSuggestions = res.getInteger(R.integer.config_delay_update_old_suggestions); mWeakSpaceStrippers = res.getString(R.string.weak_space_stripping_symbols); mWeakSpaceSwappers = res.getString(R.string.weak_space_swapping_symbols); + mPhantomSpacePromotingSymbols = res.getString(R.string.phantom_space_promoting_symbols); if (LatinImeLogger.sDBG) { final int length = mWeakSpaceStrippers.length(); for (int i = 0; i < length; i = mWeakSpaceStrippers.offsetByCodePoints(i, 1)) { @@ -192,7 +194,7 @@ public class SettingsValues { final String weakSpaceSwappers, final String symbolsExcludedFromWordSeparators, final Resources res) { String wordSeparators = weakSpaceStrippers + weakSpaceSwappers - + res.getString(R.string.weak_space_promoting_symbols); + + res.getString(R.string.phantom_space_promoting_symbols); for (int i = symbolsExcludedFromWordSeparators.length() - 1; i >= 0; --i) { wordSeparators = wordSeparators.replace( symbolsExcludedFromWordSeparators.substring(i, i + 1), ""); @@ -225,6 +227,11 @@ public class SettingsValues { return mWeakSpaceSwappers.contains(String.valueOf((char)code)); } + public boolean isPhantomSpacePromotingSymbol(int code) { + // TODO: this does not work if the code does not fit in a char + return mPhantomSpacePromotingSymbols.contains(String.valueOf((char)code)); + } + private static boolean isAutoCorrectEnabled(final Resources resources, final String currentAutoCorrectionSetting) { final String autoCorrectionOff = resources.getString( |