Fix autosuggest.

Move setting.
This commit is contained in:
eranl 2025-06-13 19:10:19 +03:00
parent 5c705a9482
commit ac4ce0856e
6 changed files with 21 additions and 21 deletions

View file

@ -302,7 +302,7 @@ public class LatinIME extends InputMethodService implements
if (latinIme == null) { if (latinIme == null) {
return; return;
} }
if (!latinIme.mSettings.getCurrent().isSuggestionsEnabledPerUserSettings()) { if (!latinIme.mSettings.getCurrent().needsToLookupSuggestions()) {
return; return;
} }
removeMessages(MSG_RESUME_SUGGESTIONS); removeMessages(MSG_RESUME_SUGGESTIONS);

View file

@ -59,12 +59,10 @@ import helium314.keyboard.latin.utils.ScriptUtils;
import helium314.keyboard.latin.utils.StatsUtils; import helium314.keyboard.latin.utils.StatsUtils;
import helium314.keyboard.latin.utils.TextRange; import helium314.keyboard.latin.utils.TextRange;
import helium314.keyboard.latin.utils.TimestampKt; import helium314.keyboard.latin.utils.TimestampKt;
import helium314.keyboard.latin.utils.ToolbarMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Locale; import java.util.Locale;
import java.util.Set;
import java.util.TreeSet; import java.util.TreeSet;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -1229,7 +1227,7 @@ public final class InputLogic {
// //
// Note: restartSuggestionsOnWordTouchedByCursor is already called for normal // Note: restartSuggestionsOnWordTouchedByCursor is already called for normal
// (non-revert) backspace handling. // (non-revert) backspace handling.
if (inputTransaction.getMSettingsValues().isSuggestionsEnabledPerUserSettings() if (inputTransaction.getMSettingsValues().needsToLookupSuggestions()
&& inputTransaction.getMSettingsValues().mSpacingAndPunctuations.mCurrentLanguageHasSpaces) { && inputTransaction.getMSettingsValues().mSpacingAndPunctuations.mCurrentLanguageHasSpaces) {
restartSuggestionsOnWordTouchedByCursor(inputTransaction.getMSettingsValues(), currentKeyboardScript); restartSuggestionsOnWordTouchedByCursor(inputTransaction.getMSettingsValues(), currentKeyboardScript);
} }
@ -1364,7 +1362,7 @@ public final class InputLogic {
} }
if (mConnection.hasSlowInputConnection()) { if (mConnection.hasSlowInputConnection()) {
mSuggestionStripViewAccessor.setNeutralSuggestionStrip(); mSuggestionStripViewAccessor.setNeutralSuggestionStrip();
} else if (inputTransaction.getMSettingsValues().isSuggestionsEnabledPerUserSettings() } else if (inputTransaction.getMSettingsValues().needsToLookupSuggestions()
&& inputTransaction.getMSettingsValues().mSpacingAndPunctuations.mCurrentLanguageHasSpaces) { && inputTransaction.getMSettingsValues().mSpacingAndPunctuations.mCurrentLanguageHasSpaces) {
restartSuggestionsOnWordTouchedByCursor(inputTransaction.getMSettingsValues(), currentKeyboardScript); restartSuggestionsOnWordTouchedByCursor(inputTransaction.getMSettingsValues(), currentKeyboardScript);
} }
@ -1373,7 +1371,7 @@ public final class InputLogic {
String getWordAtCursor(final SettingsValues settingsValues, final String currentKeyboardScript) { String getWordAtCursor(final SettingsValues settingsValues, final String currentKeyboardScript) {
if (!mConnection.hasSelection() if (!mConnection.hasSelection()
&& settingsValues.isSuggestionsEnabledPerUserSettings() && settingsValues.needsToLookupSuggestions()
&& settingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces) { && settingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces) {
final TextRange range = mConnection.getWordRangeAtCursor(settingsValues.mSpacingAndPunctuations, currentKeyboardScript); final TextRange range = mConnection.getWordRangeAtCursor(settingsValues.mSpacingAndPunctuations, currentKeyboardScript);
if (range != null) { if (range != null) {
@ -1689,7 +1687,7 @@ public final class InputLogic {
&& mLatinIME.tryShowClipboardSuggestion())) { && mLatinIME.tryShowClipboardSuggestion())) {
mSuggestionStripViewAccessor.setSuggestions(suggestedWords); mSuggestionStripViewAccessor.setSuggestions(suggestedWords);
} }
if (! suggestedWords.isEmpty() && isEmojiSearch()) { if (shouldAutoShowSuggestions(settingsValues, suggestedWords)) {
mSuggestionStripViewAccessor.showSuggestionStrip(); mSuggestionStripViewAccessor.showSuggestionStrip();
} }
} }
@ -1822,12 +1820,16 @@ public final class InputLogic {
mIsAutoCorrectionIndicatorOn = false; mIsAutoCorrectionIndicatorOn = false;
if (suggestedWords != null) { if (suggestedWords != null) {
mSuggestionStripViewAccessor.setSuggestions(suggestedWords); mSuggestionStripViewAccessor.setSuggestions(suggestedWords);
if (! suggestedWords.isEmpty() && isEmojiSearch()) { if (shouldAutoShowSuggestions(Settings.getValues(), suggestedWords)) {
mSuggestionStripViewAccessor.showSuggestionStrip(); mSuggestionStripViewAccessor.showSuggestionStrip();
} }
} }
} }
private boolean shouldAutoShowSuggestions(SettingsValues settingsValues, SuggestedWords suggestedWords) {
return ! suggestedWords.isEmpty() && settingsValues.isSuggestionsEnabledPerUserSettings() && isEmojiSearch();
}
/** /**
* Reverts a previous commit with auto-correction. * Reverts a previous commit with auto-correction.
* <p> * <p>
@ -2611,8 +2613,7 @@ public final class InputLogic {
} }
private void updateEmojiDictionary(Locale locale) { private void updateEmojiDictionary(Locale locale) {
if (Settings.getValues().mInlineEmojiSearch if (Settings.getValues().mInlineEmojiSearch && Settings.getValues().needsToLookupSuggestions()) {
&& Set.of(ToolbarMode.SUGGESTION_STRIP, ToolbarMode.EXPANDABLE).contains(Settings.getValues().mToolbarMode)) {
if (mEmojiDictionaryFacilitator == null || ! mEmojiDictionaryFacilitator.isForLocale(locale)) { if (mEmojiDictionaryFacilitator == null || ! mEmojiDictionaryFacilitator.isForLocale(locale)) {
closeEmojiDictionary(); closeEmojiDictionary();
var dictFile = DictionaryInfoUtils.getCachedDictForLocaleAndType(locale, "emoji", mLatinIME); var dictFile = DictionaryInfoUtils.getCachedDictForLocaleAndType(locale, "emoji", mLatinIME);

View file

@ -239,8 +239,8 @@ public class SettingsValues {
&& ((inputAttributes.mInputType & InputType.TYPE_MASK_VARIATION) != InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT && ((inputAttributes.mInputType & InputType.TYPE_MASK_VARIATION) != InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT
|| !prefs.getBoolean(Settings.PREF_ALWAYS_SHOW_SUGGESTIONS_EXCEPT_WEB_TEXT, Defaults.PREF_ALWAYS_SHOW_SUGGESTIONS_EXCEPT_WEB_TEXT)); || !prefs.getBoolean(Settings.PREF_ALWAYS_SHOW_SUGGESTIONS_EXCEPT_WEB_TEXT, Defaults.PREF_ALWAYS_SHOW_SUGGESTIONS_EXCEPT_WEB_TEXT));
final boolean suggestionsEnabled = prefs.getBoolean(Settings.PREF_SHOW_SUGGESTIONS, Defaults.PREF_SHOW_SUGGESTIONS); final boolean suggestionsEnabled = prefs.getBoolean(Settings.PREF_SHOW_SUGGESTIONS, Defaults.PREF_SHOW_SUGGESTIONS);
mSuggestionsEnabledPerUserSettings = ((mInputAttributes.mShouldShowSuggestions && suggestionsEnabled) mSuggestionsEnabledPerUserSettings = suggestionsEnabled && (mInputAttributes.mShouldShowSuggestions || mOverrideShowingSuggestions)
|| mOverrideShowingSuggestions) && !mSuggestionStripHiddenPerUserSettings; && !mSuggestionStripHiddenPerUserSettings;
mSecondaryStripVisible = mToolbarMode != ToolbarMode.HIDDEN || ! mToolbarHidingGlobal; mSecondaryStripVisible = mToolbarMode != ToolbarMode.HIDDEN || ! mToolbarHidingGlobal;
mIncognitoModeEnabled = prefs.getBoolean(Settings.PREF_ALWAYS_INCOGNITO_MODE, Defaults.PREF_ALWAYS_INCOGNITO_MODE) || mInputAttributes.mNoLearning mIncognitoModeEnabled = prefs.getBoolean(Settings.PREF_ALWAYS_INCOGNITO_MODE, Defaults.PREF_ALWAYS_INCOGNITO_MODE) || mInputAttributes.mNoLearning
|| mInputAttributes.mIsPasswordField; || mInputAttributes.mIsPasswordField;

View file

@ -58,8 +58,6 @@ fun PreferencesScreen(
Settings.PREF_SOUND_ON, Settings.PREF_SOUND_ON,
if (prefs.getBoolean(Settings.PREF_SOUND_ON, Defaults.PREF_SOUND_ON)) if (prefs.getBoolean(Settings.PREF_SOUND_ON, Defaults.PREF_SOUND_ON))
Settings.PREF_KEYPRESS_SOUND_VOLUME else null, Settings.PREF_KEYPRESS_SOUND_VOLUME else null,
if (Settings.readToolbarMode(prefs) in setOf(ToolbarMode.SUGGESTION_STRIP, ToolbarMode.EXPANDABLE))
Settings.PREF_INLINE_EMOJI_SEARCH else null,
Settings.PREF_SHOW_EMOJI_DESCRIPTIONS, Settings.PREF_SHOW_EMOJI_DESCRIPTIONS,
R.string.settings_category_additional_keys, R.string.settings_category_additional_keys,
Settings.PREF_SHOW_NUMBER_ROW, Settings.PREF_SHOW_NUMBER_ROW,
@ -115,12 +113,6 @@ fun createPreferencesSettings(context: Context) = listOf(
Setting(context, Settings.PREF_SOUND_ON, R.string.sound_on_keypress) { Setting(context, Settings.PREF_SOUND_ON, R.string.sound_on_keypress) {
SwitchPreference(it, Defaults.PREF_SOUND_ON) SwitchPreference(it, Defaults.PREF_SOUND_ON)
}, },
Setting(
context, Settings.PREF_INLINE_EMOJI_SEARCH, R.string.inline_emoji_search,
R.string.inline_emoji_search_summary
) {
SwitchPreference(it, Defaults.PREF_INLINE_EMOJI_SEARCH)
},
Setting( Setting(
context, Settings.PREF_SHOW_EMOJI_DESCRIPTIONS, R.string.show_emoji_descriptions, context, Settings.PREF_SHOW_EMOJI_DESCRIPTIONS, R.string.show_emoji_descriptions,
R.string.show_emoji_descriptions_summary R.string.show_emoji_descriptions_summary

View file

@ -76,6 +76,7 @@ fun TextCorrectionScreen(
if (suggestionsEnabled && prefs.getBoolean(Settings.PREF_ALWAYS_SHOW_SUGGESTIONS, Defaults.PREF_ALWAYS_SHOW_SUGGESTIONS)) if (suggestionsEnabled && prefs.getBoolean(Settings.PREF_ALWAYS_SHOW_SUGGESTIONS, Defaults.PREF_ALWAYS_SHOW_SUGGESTIONS))
Settings.PREF_ALWAYS_SHOW_SUGGESTIONS_EXCEPT_WEB_TEXT else null, Settings.PREF_ALWAYS_SHOW_SUGGESTIONS_EXCEPT_WEB_TEXT else null,
if (suggestionsEnabled) Settings.PREF_CENTER_SUGGESTION_TEXT_TO_ENTER else null, if (suggestionsEnabled) Settings.PREF_CENTER_SUGGESTION_TEXT_TO_ENTER else null,
if (suggestionsEnabled || autocorrectEnabled) Settings.PREF_INLINE_EMOJI_SEARCH else null,
Settings.PREF_KEY_USE_PERSONALIZED_DICTS, Settings.PREF_KEY_USE_PERSONALIZED_DICTS,
Settings.PREF_BIGRAM_PREDICTIONS, Settings.PREF_BIGRAM_PREDICTIONS,
Settings.PREF_SUGGEST_CLIPBOARD_CONTENT, Settings.PREF_SUGGEST_CLIPBOARD_CONTENT,
@ -233,6 +234,12 @@ fun createCorrectionSettings(context: Context) = listOf(
) { setting -> ) { setting ->
SwitchPreference(setting, Defaults.PREF_USE_APPS) SwitchPreference(setting, Defaults.PREF_USE_APPS)
}, },
Setting(
context, Settings.PREF_INLINE_EMOJI_SEARCH, R.string.inline_emoji_search,
R.string.inline_emoji_search_summary
) {
SwitchPreference(it, Defaults.PREF_INLINE_EMOJI_SEARCH)
},
Setting(context, Settings.PREF_ADD_TO_PERSONAL_DICTIONARY, Setting(context, Settings.PREF_ADD_TO_PERSONAL_DICTIONARY,
R.string.add_to_personal_dictionary, R.string.add_to_personal_dictionary_summary R.string.add_to_personal_dictionary, R.string.add_to_personal_dictionary_summary
) { ) {

View file

@ -20,7 +20,7 @@
<!-- Option to perform inline emoji search --> <!-- Option to perform inline emoji search -->
<string name="inline_emoji_search">Focused emoji suggestions</string> <string name="inline_emoji_search">Focused emoji suggestions</string>
<!-- Description for option to perform inline emoji search --> <!-- Description for option to perform inline emoji search -->
<string name="inline_emoji_search_summary">Show only emoji suggestions when a word is preceded by a colon</string> <string name="inline_emoji_search_summary">Suggest only emojis when a word is preceded by a colon</string>
<!-- Option to show emoji descriptions on long press --> <!-- Option to show emoji descriptions on long press -->
<string name="show_emoji_descriptions">Show emoji description on long press</string> <string name="show_emoji_descriptions">Show emoji description on long press</string>
<!-- Description for option to show emoji descriptions on long press --> <!-- Description for option to show emoji descriptions on long press -->