aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
diff options
context:
space:
mode:
authorYohei Yukaw <yukawa@google.com>2015-04-17 16:48:10 -0700
committerYohei Yukaw <yukawa@google.com>2015-04-20 20:29:44 -0700
commit490fa47a46015f2c8bd8f9010d236bfe5aecd4bb (patch)
tree55599c8c109d3959fdc8f616b144ed43ffb755b7 /java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
parent54e891e2bdce2d3d1f8a319c1f596fd6590314f3 (diff)
downloadlatinime-490fa47a46015f2c8bd8f9010d236bfe5aecd4bb.tar.gz
latinime-490fa47a46015f2c8bd8f9010d236bfe5aecd4bb.tar.xz
latinime-490fa47a46015f2c8bd8f9010d236bfe5aecd4bb.zip
Always specify non-null Locale object to SuggestionSpan
Confusingly, specifying a null Locale object to the constructor of SuggestionSpan does not necessarily mean that SuggestionSpan#getLocale() returns null. The constructor in question also receives Context object, and Context's locale can be used as a fallback locale to initialize locale of SuggestionSpan. With this CL, LatinIME always specify non-null Locale object when instantiating SuggestionSpan object. It basically corresponds to the active main dictionary, but can be Locale#ROOT when one locale is not determined for some reasons. BUG: 20435013 Change-Id: I2c152466410327300e7dba4d7ed9a22f57c17c4f
Diffstat (limited to 'java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java')
-rw-r--r--java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java18
1 files changed, 16 insertions, 2 deletions
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index 324ae3a19..f7dbc0a4d 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -60,6 +60,7 @@ import com.android.inputmethod.latin.utils.StatsUtils;
import com.android.inputmethod.latin.utils.TextRange;
import java.util.ArrayList;
+import java.util.Locale;
import java.util.TreeSet;
import java.util.concurrent.TimeUnit;
@@ -1903,6 +1904,15 @@ public final class InputLogic {
}
/**
+ * @return the {@link Locale} of the {@link #mDictionaryFacilitator} if available. Otherwise
+ * {@link Locale#ROOT}.
+ */
+ @Nonnull
+ private Locale getDictionaryFacilitatorLocale() {
+ return mDictionaryFacilitator != null ? mDictionaryFacilitator.getLocale() : Locale.ROOT;
+ }
+
+ /**
* Gets a chunk of text with or the auto-correction indicator underline span as appropriate.
*
* This method looks at the old state of the auto-correction indicator to put or not put
@@ -1921,8 +1931,10 @@ public final class InputLogic {
*/
// TODO: Shouldn't this go in some *Utils class instead?
private CharSequence getTextWithUnderline(final String text) {
+ // TODO: Locale should be determined based on context and the text given.
return mIsAutoCorrectionIndicatorOn
- ? SuggestionSpanUtils.getTextWithAutoCorrectionIndicatorUnderline(mLatinIME, text)
+ ? SuggestionSpanUtils.getTextWithAutoCorrectionIndicatorUnderline(
+ mLatinIME, text, getDictionaryFacilitatorLocale())
: text;
}
@@ -2122,9 +2134,11 @@ public final class InputLogic {
Log.d(TAG, "commitChosenWord() : [" + chosenWord + "]");
}
final SuggestedWords suggestedWords = mSuggestedWords;
+ // TODO: Locale should be determined based on context and the text given.
+ final Locale locale = getDictionaryFacilitatorLocale();
final CharSequence chosenWordWithSuggestions =
SuggestionSpanUtils.getTextWithSuggestionSpan(mLatinIME, chosenWord,
- suggestedWords);
+ suggestedWords, locale);
if (DebugFlags.DEBUG_ENABLED) {
long runTimeMillis = System.currentTimeMillis() - startTimeMillis;
Log.d(TAG, "commitChosenWord() : " + runTimeMillis + " ms to run "