From 6ec03290a55d65fc63489c0f60eb0ec88e68f643 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Mon, 20 Nov 2023 09:44:52 +0100 Subject: [PATCH] avoid unnecessary dictionary facilitator resets a reset also resets confidence values for multilingual typing, which is most likely unwanted --- .../inputmethod/latin/DictionaryFacilitator.java | 2 ++ .../latin/DictionaryFacilitatorImpl.java | 5 +++++ .../openboard/inputmethod/latin/LatinIME.java | 15 ++++++--------- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitator.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitator.java index ee9b69c4..c9faa8de 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitator.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitator.java @@ -102,6 +102,8 @@ public interface DictionaryFacilitator { boolean usesContacts(); + boolean usesPersonalization(); + String getAccount(); void resetDictionaries( diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitatorImpl.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitatorImpl.java index 0538fff7..317f3f12 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitatorImpl.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitatorImpl.java @@ -294,6 +294,11 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator { return mDictionaryGroups.get(0).getSubDict(Dictionary.TYPE_CONTACTS) != null; } + @Override + public boolean usesPersonalization() { + return mDictionaryGroups.get(0).getSubDict(Dictionary.TYPE_USER_HISTORY) != null; + } + @Override public String getAccount() { return null; diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java index 6dbc81be..6a874bb0 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java @@ -609,11 +609,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen mClipboardHistoryManager.onCreate(); mHandler.onCreate(); - - // TODO: Resolve mutual dependencies of {@link #loadSettings()} and - // {@link #resetDictionaryFacilitatorIfNecessary()}. loadSettings(); - resetDictionaryFacilitatorIfNecessary(); // Register to receive ringer mode change. final IntentFilter filter = new IntentFilter(); @@ -661,10 +657,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen // been displayed. Opening dictionaries never affects responsivity as dictionaries are // asynchronously loaded. if (!mHandler.hasPendingReopenDictionaries()) { - resetDictionaryFacilitator(locale); + resetDictionaryFacilitatorIfNecessary(); } refreshPersonalizationDictionarySession(currentSettingsValues); - resetDictionaryFacilitatorIfNecessary(); mStatsUtilsManager.onLoadSettings(this /* context */, currentSettingsValues); } @@ -704,7 +699,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen subtypeLocale = subtypeSwitcherLocale; } if (mDictionaryFacilitator.isForLocale(subtypeLocale) - && mDictionaryFacilitator.isForAccount(mSettings.getCurrent().mAccount)) { + && mDictionaryFacilitator.isForAccount(mSettings.getCurrent().mAccount) + && mDictionaryFacilitator.usesContacts() == mSettings.getCurrent().mUseContactsDictionary + && mDictionaryFacilitator.usesPersonalization() == mSettings.getCurrent().mUsePersonalizedDicts + ) { return; } resetDictionaryFacilitator(subtypeLocale); @@ -725,8 +723,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen settingsValues.mAccount, "" /* dictNamePrefix */, this /* DictionaryInitializationListener */); if (settingsValues.mAutoCorrectionEnabledPerUserSettings) { - mInputLogic.mSuggest.setAutoCorrectionThreshold( - settingsValues.mAutoCorrectionThreshold); + mInputLogic.mSuggest.setAutoCorrectionThreshold(settingsValues.mAutoCorrectionThreshold); } }