Don't apply autotext to the wrong input language.
Since autotext is tied to the display language, if the input lang is different from the display lang, don't apply autotext. Bug: 2417495main
parent
db84e0318c
commit
fac5dcb5fe
|
@ -318,12 +318,14 @@ public class LatinIME extends InputMethodService
|
|||
Resources orig = getResources();
|
||||
Configuration conf = orig.getConfiguration();
|
||||
Locale saveLocale = conf.locale;
|
||||
boolean different = !conf.locale.getCountry().equalsIgnoreCase(locale.substring(0, 2));
|
||||
conf.locale = new Locale(locale);
|
||||
orig.updateConfiguration(conf, orig.getDisplayMetrics());
|
||||
if (mSuggest != null) {
|
||||
mSuggest.close();
|
||||
}
|
||||
mSuggest = new Suggest(this, R.raw.main);
|
||||
mSuggest.setAutoTextEnabled(!different);
|
||||
if (mUserDictionary != null) mUserDictionary.close();
|
||||
mUserDictionary = new UserDictionary(this);
|
||||
if (mContactsDictionary == null) {
|
||||
|
|
|
@ -51,6 +51,8 @@ public class Suggest implements Dictionary.WordCallback {
|
|||
|
||||
private int mPrefMaxSuggestions = 12;
|
||||
|
||||
private boolean mAutoTextEnabled;
|
||||
|
||||
private int[] mPriorities = new int[mPrefMaxSuggestions];
|
||||
// Handle predictive correction for only the first 1280 characters for performance reasons
|
||||
// If we support scripts that need latin characters beyond that, we should probably use some
|
||||
|
@ -76,6 +78,10 @@ public class Suggest implements Dictionary.WordCallback {
|
|||
}
|
||||
}
|
||||
|
||||
public void setAutoTextEnabled(boolean enabled) {
|
||||
mAutoTextEnabled = enabled;
|
||||
}
|
||||
|
||||
public int getCorrectionMode() {
|
||||
return mCorrectionMode;
|
||||
}
|
||||
|
@ -207,29 +213,31 @@ public class Suggest implements Dictionary.WordCallback {
|
|||
mHaveCorrection = false;
|
||||
}
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
int max = 6;
|
||||
// Don't autotext the suggestions from the dictionaries
|
||||
if (mCorrectionMode == CORRECTION_BASIC) max = 1;
|
||||
while (i < mSuggestions.size() && i < max) {
|
||||
String suggestedWord = mSuggestions.get(i).toString().toLowerCase();
|
||||
CharSequence autoText =
|
||||
AutoText.get(suggestedWord, 0, suggestedWord.length(), view);
|
||||
// Is there an AutoText correction?
|
||||
boolean canAdd = autoText != null;
|
||||
// Is that correction already the current prediction (or original word)?
|
||||
canAdd &= !TextUtils.equals(autoText, mSuggestions.get(i));
|
||||
// Is that correction already the next predicted word?
|
||||
if (canAdd && i + 1 < mSuggestions.size() && mCorrectionMode != CORRECTION_BASIC) {
|
||||
canAdd &= !TextUtils.equals(autoText, mSuggestions.get(i + 1));
|
||||
}
|
||||
if (canAdd) {
|
||||
mHaveCorrection = true;
|
||||
mSuggestions.add(i + 1, autoText);
|
||||
|
||||
if (mAutoTextEnabled) {
|
||||
int i = 0;
|
||||
int max = 6;
|
||||
// Don't autotext the suggestions from the dictionaries
|
||||
if (mCorrectionMode == CORRECTION_BASIC) max = 1;
|
||||
while (i < mSuggestions.size() && i < max) {
|
||||
String suggestedWord = mSuggestions.get(i).toString().toLowerCase();
|
||||
CharSequence autoText =
|
||||
AutoText.get(suggestedWord, 0, suggestedWord.length(), view);
|
||||
// Is there an AutoText correction?
|
||||
boolean canAdd = autoText != null;
|
||||
// Is that correction already the current prediction (or original word)?
|
||||
canAdd &= !TextUtils.equals(autoText, mSuggestions.get(i));
|
||||
// Is that correction already the next predicted word?
|
||||
if (canAdd && i + 1 < mSuggestions.size() && mCorrectionMode != CORRECTION_BASIC) {
|
||||
canAdd &= !TextUtils.equals(autoText, mSuggestions.get(i + 1));
|
||||
}
|
||||
if (canAdd) {
|
||||
mHaveCorrection = true;
|
||||
mSuggestions.add(i + 1, autoText);
|
||||
i++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
removeDupes();
|
||||
|
|
Loading…
Reference in New Issue