aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2012-03-06 14:00:34 +0900
committerJean Chalard <jchalard@google.com>2012-03-06 14:00:34 +0900
commit00ed3be95cee472685bcba1ea861ac75c61db690 (patch)
treea4c1194bcd721eb1bddf10365f926584d38c41bb /java/src
parente31060dc776246b64a9081fedf162babbe87064c (diff)
downloadlatinime-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.java4
-rw-r--r--java/src/com/android/inputmethod/latin/SettingsValues.java9
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(