From 9e91e7562b1e39140380088e57f2028b43bbf677 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Sat, 22 Mar 2025 19:27:38 +0100 Subject: [PATCH] add another setting to disable always show suggestions just for web edit fields, which seem fo frequenty cause issues with this setting --- .../java/helium314/keyboard/latin/settings/Defaults.kt | 1 + .../java/helium314/keyboard/latin/settings/Settings.java | 1 + .../helium314/keyboard/latin/settings/SettingsValues.java | 6 +++++- .../keyboard/settings/screens/TextCorrectionScreen.kt | 7 +++++++ app/src/main/res/values/strings.xml | 4 ++++ 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/helium314/keyboard/latin/settings/Defaults.kt b/app/src/main/java/helium314/keyboard/latin/settings/Defaults.kt index 1a890fa2..58ef7939 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/Defaults.kt +++ b/app/src/main/java/helium314/keyboard/latin/settings/Defaults.kt @@ -66,6 +66,7 @@ object Defaults { const val PREF_CENTER_SUGGESTION_TEXT_TO_ENTER = false const val PREF_SHOW_SUGGESTIONS = true const val PREF_ALWAYS_SHOW_SUGGESTIONS = false + const val PREF_ALWAYS_SHOW_SUGGESTIONS_EXCEPT_WEB_TEXT = true const val PREF_KEY_USE_PERSONALIZED_DICTS = true const val PREF_KEY_USE_DOUBLE_SPACE_PERIOD = true const val PREF_BLOCK_POTENTIALLY_OFFENSIVE = true diff --git a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java index 6d45548a..bad339e5 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java @@ -74,6 +74,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static final String PREF_CENTER_SUGGESTION_TEXT_TO_ENTER = "center_suggestion_text_to_enter"; public static final String PREF_SHOW_SUGGESTIONS = "show_suggestions"; public static final String PREF_ALWAYS_SHOW_SUGGESTIONS = "always_show_suggestions"; + public static final String PREF_ALWAYS_SHOW_SUGGESTIONS_EXCEPT_WEB_TEXT = "always_show_suggestions_except_web_text"; public static final String PREF_KEY_USE_PERSONALIZED_DICTS = "use_personalized_dicts"; public static final String PREF_KEY_USE_DOUBLE_SPACE_PERIOD = "use_double_space_period"; public static final String PREF_BLOCK_POTENTIALLY_OFFENSIVE = "block_potentially_offensive"; diff --git a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java index 9a18fde2..376c3668 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java @@ -11,6 +11,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.content.res.Configuration; import android.content.res.Resources; +import android.text.InputType; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodSubtype; @@ -221,7 +222,10 @@ public class SettingsValues { mGestureFastTypingCooldown = prefs.getInt(Settings.PREF_GESTURE_FAST_TYPING_COOLDOWN, Defaults.PREF_GESTURE_FAST_TYPING_COOLDOWN); mGestureTrailFadeoutDuration = prefs.getInt(Settings.PREF_GESTURE_TRAIL_FADEOUT_DURATION, Defaults.PREF_GESTURE_TRAIL_FADEOUT_DURATION); mAccount = null; // remove? or can it be useful somewhere? - mOverrideShowingSuggestions = mInputAttributes.mMayOverrideShowingSuggestions && prefs.getBoolean(Settings.PREF_ALWAYS_SHOW_SUGGESTIONS, Defaults.PREF_ALWAYS_SHOW_SUGGESTIONS); + mOverrideShowingSuggestions = mInputAttributes.mMayOverrideShowingSuggestions + && prefs.getBoolean(Settings.PREF_ALWAYS_SHOW_SUGGESTIONS, Defaults.PREF_ALWAYS_SHOW_SUGGESTIONS) + && ((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)); final boolean suggestionsEnabled = prefs.getBoolean(Settings.PREF_SHOW_SUGGESTIONS, Defaults.PREF_SHOW_SUGGESTIONS); mSuggestionsEnabledPerUserSettings = (mInputAttributes.mShouldShowSuggestions && suggestionsEnabled) || mOverrideShowingSuggestions; diff --git a/app/src/main/java/helium314/keyboard/settings/screens/TextCorrectionScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/TextCorrectionScreen.kt index 97d64188..f2d57048 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/TextCorrectionScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/TextCorrectionScreen.kt @@ -63,6 +63,8 @@ fun TextCorrectionScreen( R.string.settings_category_suggestions, Settings.PREF_SHOW_SUGGESTIONS, if (suggestionsEnabled) Settings.PREF_ALWAYS_SHOW_SUGGESTIONS else null, + if (suggestionsEnabled && prefs.getBoolean(Settings.PREF_ALWAYS_SHOW_SUGGESTIONS, Defaults.PREF_ALWAYS_SHOW_SUGGESTIONS)) + Settings.PREF_ALWAYS_SHOW_SUGGESTIONS_EXCEPT_WEB_TEXT else null, if (suggestionsEnabled) Settings.PREF_CENTER_SUGGESTION_TEXT_TO_ENTER else null, Settings.PREF_KEY_USE_PERSONALIZED_DICTS, Settings.PREF_BIGRAM_PREDICTIONS, @@ -139,6 +141,11 @@ fun createCorrectionSettings(context: Context) = listOf( ) { SwitchPreference(it, Defaults.PREF_ALWAYS_SHOW_SUGGESTIONS) }, + Setting(context, Settings.PREF_ALWAYS_SHOW_SUGGESTIONS_EXCEPT_WEB_TEXT, + R.string.prefs_always_show_suggestions_except_web_text, R.string.prefs_always_show_suggestions_except_web_text_summary + ) { + SwitchPreference(it, Defaults.PREF_ALWAYS_SHOW_SUGGESTIONS_EXCEPT_WEB_TEXT) + }, Setting(context, Settings.PREF_KEY_USE_PERSONALIZED_DICTS, R.string.use_personalized_dicts, R.string.use_personalized_dicts_summary ) { setting -> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e063b07c..f683b120 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -104,6 +104,10 @@ Always show suggestions Ignore other apps’ request to disable suggestions (may cause issues) + + Don’t always show suggestions for web edit fields + + Web edit fields (mostly found in browsers) are a very common cause for issues with the always show suggestions setting Block offensive words