Correct a shaky processing and move it to a better place
The old code would remove caps from the first letter if auto-capsed but that makes very little sense when the word is camel-cased. Also, it would not correctly handle surrogate pairs, and would require a direct reference to LatinIME and a specific method to do the processing in an unexpected place. Change-Id: I416d6a805242788a2473f007ca7452c9fe3f5205
This commit is contained in:
parent
3ee7d97587
commit
71f9d30b18
2 changed files with 9 additions and 14 deletions
|
@ -528,7 +528,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
|
|||
resetContactsDictionary(oldContactsDictionary);
|
||||
|
||||
mUserHistoryDictionary
|
||||
= new UserHistoryDictionary(this, this, localeStr, Suggest.DIC_USER_HISTORY);
|
||||
= new UserHistoryDictionary(this, localeStr, Suggest.DIC_USER_HISTORY);
|
||||
mSuggest.setUserHistoryDictionary(mUserHistoryDictionary);
|
||||
|
||||
LocaleUtils.setSystemLocale(res, savedLocale);
|
||||
|
@ -2012,8 +2012,14 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
|
|||
} else {
|
||||
prevWord = null;
|
||||
}
|
||||
final String secondWord;
|
||||
if (mWordComposer.isAutoCapitalized() && !mWordComposer.isMostlyCaps()) {
|
||||
secondWord = suggestion.toString().toLowerCase(mSubtypeSwitcher.getInputLocale());
|
||||
} else {
|
||||
secondWord = suggestion.toString();
|
||||
}
|
||||
mUserHistoryDictionary.addToUserHistory(null == prevWord ? null : prevWord.toString(),
|
||||
suggestion.toString());
|
||||
secondWord);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2254,10 +2260,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
|
|||
mFeedbackManager.vibrate(mKeyboardSwitcher.getKeyboardView());
|
||||
}
|
||||
|
||||
public boolean isAutoCapitalized() {
|
||||
return mWordComposer.isAutoCapitalized();
|
||||
}
|
||||
|
||||
private void updateCorrectionMode() {
|
||||
// TODO: cleanup messy flags
|
||||
final boolean shouldAutoCorrect = mSettingsValues.mAutoCorrectEnabled
|
||||
|
|
|
@ -75,8 +75,6 @@ public class UserHistoryDictionary extends ExpandableDictionary {
|
|||
private static final String FREQ_COLUMN_PAIR_ID = "pair_id";
|
||||
private static final String FREQ_COLUMN_FREQUENCY = "freq";
|
||||
|
||||
private final LatinIME mIme;
|
||||
|
||||
/** Locale for which this auto dictionary is storing words */
|
||||
private String mLocale;
|
||||
|
||||
|
@ -139,9 +137,8 @@ public class UserHistoryDictionary extends ExpandableDictionary {
|
|||
sDeleteHistoryBigrams = deleteHistoryBigram;
|
||||
}
|
||||
|
||||
public UserHistoryDictionary(Context context, LatinIME ime, String locale, int dicTypeId) {
|
||||
public UserHistoryDictionary(final Context context, final String locale, final int dicTypeId) {
|
||||
super(context, dicTypeId);
|
||||
mIme = ime;
|
||||
mLocale = locale;
|
||||
if (sOpenHelper == null) {
|
||||
sOpenHelper = new DatabaseHelper(getContext());
|
||||
|
@ -179,10 +176,6 @@ public class UserHistoryDictionary extends ExpandableDictionary {
|
|||
* The second word may not be null (a NullPointerException would be thrown).
|
||||
*/
|
||||
public int addToUserHistory(final String word1, String word2) {
|
||||
// remove caps if second word is autocapitalized
|
||||
if (mIme != null && mIme.isAutoCapitalized()) {
|
||||
word2 = Character.toLowerCase(word2.charAt(0)) + word2.substring(1);
|
||||
}
|
||||
super.addWord(word2, FREQUENCY_FOR_TYPED);
|
||||
// Do not insert a word as a bigram of itself
|
||||
if (word2.equals(word1)) {
|
||||
|
|
Loading…
Reference in a new issue