From fad6c7b7584c8ca4c5a4ce4b2696b6fbc47f116b Mon Sep 17 00:00:00 2001 From: Helium314 Date: Sun, 2 Mar 2025 17:04:16 +0100 Subject: [PATCH] fix some bugs resulting in bad colors after entering ColorsScreen --- .../keyboard/keyboard/KeyboardSwitcher.java | 2 ++ .../keyboard/keyboard/KeyboardTheme.kt | 20 +++++++++---------- .../keyboard/settings/SettingsActivity.kt | 11 ++++------ 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/helium314/keyboard/keyboard/KeyboardSwitcher.java b/app/src/main/java/helium314/keyboard/keyboard/KeyboardSwitcher.java index ff143cb2..aeb07b9e 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/KeyboardSwitcher.java +++ b/app/src/main/java/helium314/keyboard/keyboard/KeyboardSwitcher.java @@ -655,6 +655,8 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { prefs.unregisterOnSharedPreferenceChangeListener(mSuggestionStripView); if (mClipboardHistoryView != null) prefs.unregisterOnSharedPreferenceChangeListener(mClipboardHistoryView); + if (mThemeNeedsReload) // necessary in some cases (e.g. theme switch) when mThemeNeedsReload is set before first keyboard load + Settings.getInstance().loadSettings(displayContext, Settings.getValues().mLocale, Settings.getValues().mInputAttributes); updateKeyboardThemeAndContextThemeWrapper(displayContext, KeyboardTheme.getKeyboardTheme(displayContext)); mCurrentInputView = (InputView)LayoutInflater.from(mThemeContext).inflate(R.layout.input_view, null); diff --git a/app/src/main/java/helium314/keyboard/keyboard/KeyboardTheme.kt b/app/src/main/java/helium314/keyboard/keyboard/KeyboardTheme.kt index 63242aa5..9a51bafa 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/KeyboardTheme.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/KeyboardTheme.kt @@ -342,16 +342,16 @@ private constructor(val themeId: Int, @JvmField val mStyleId: Int) { DefaultColors( themeStyle, hasBorders, - determineUserColor(colors, context, COLOR_ACCENT, false), - determineUserColor(colors, context, COLOR_BACKGROUND, false), - determineUserColor(colors, context, COLOR_KEYS, false), - determineUserColor(colors, context, COLOR_FUNCTIONAL_KEYS, false), - determineUserColor(colors, context, COLOR_SPACEBAR, false), - determineUserColor(colors, context, COLOR_TEXT, false), - determineUserColor(colors, context, COLOR_HINT_TEXT, false), - determineUserColor(colors, context, COLOR_SUGGESTION_TEXT, false), - determineUserColor(colors, context, COLOR_SPACEBAR_TEXT, false), - determineUserColor(colors, context, COLOR_GESTURE, false), + determineUserColor(colors, context, COLOR_ACCENT, isNight), + determineUserColor(colors, context, COLOR_BACKGROUND, isNight), + determineUserColor(colors, context, COLOR_KEYS, isNight), + determineUserColor(colors, context, COLOR_FUNCTIONAL_KEYS, isNight), + determineUserColor(colors, context, COLOR_SPACEBAR, isNight), + determineUserColor(colors, context, COLOR_TEXT, isNight), + determineUserColor(colors, context, COLOR_HINT_TEXT, isNight), + determineUserColor(colors, context, COLOR_SUGGESTION_TEXT, isNight), + determineUserColor(colors, context, COLOR_SPACEBAR_TEXT, isNight), + determineUserColor(colors, context, COLOR_GESTURE, isNight), backgroundImage, ) } diff --git a/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt b/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt index af3f1ec0..0cc14867 100644 --- a/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt +++ b/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt @@ -156,11 +156,8 @@ class SettingsActivity : ComponentActivity(), SharedPreferences.OnSharedPreferen override fun onPause() { super.onPause() + setForceTheme(null, null) paused = true - if (forceNight != null || forceTheme != null) - KeyboardSwitcher.getInstance().setThemeNeedsReload() - forceNight = false - forceTheme = null } override fun onResume() { @@ -170,11 +167,11 @@ class SettingsActivity : ComponentActivity(), SharedPreferences.OnSharedPreferen fun setForceTheme(theme: String?, night: Boolean?) { if (paused) return - if (forceTheme != theme || forceNight != night) { - KeyboardSwitcher.getInstance().setThemeNeedsReload() - } + if (forceTheme == theme && forceNight == night) + return forceTheme = theme forceNight = night + KeyboardSwitcher.getInstance().setThemeNeedsReload() } private fun findCrashReports(): List {