diff --git a/app/src/main/java/helium314/keyboard/keyboard/KeyboardSwitcher.java b/app/src/main/java/helium314/keyboard/keyboard/KeyboardSwitcher.java index ff143cb22..aeb07b9e3 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 63242aa51..9a51bafa6 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 af3f1ec0e..0cc148673 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 {