diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ThemeHelper.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ThemeHelper.kt index 7c8f1d80b..1295b4257 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ThemeHelper.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ThemeHelper.kt @@ -33,7 +33,13 @@ object ThemeHelper { DEFAULT -> activity.setTheme(R.style.Theme_Yuzu_Main) MATERIAL_YOU -> activity.setTheme(R.style.Theme_Yuzu_Main_MaterialYou) } - if (preferences.getBoolean(Settings.PREF_BLACK_BACKGROUNDS, false)) { + + // Using a specific night mode check because this could apply incorrectly when using the + // light app mode, dark system mode, and black backgrounds. Launching the settings activity + // will then show light mode colors/navigation bars but with black backgrounds. + if (preferences.getBoolean(Settings.PREF_BLACK_BACKGROUNDS, false) + && isNightMode(activity) + ) { activity.setTheme(R.style.ThemeOverlay_Yuzu_Dark) } } @@ -84,18 +90,24 @@ object ThemeHelper { activity.window, activity.window.decorView ) - val systemReportedThemeMode = - activity.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK when (themeMode) { - AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM -> when (systemReportedThemeMode) { - Configuration.UI_MODE_NIGHT_NO -> setLightModeSystemBars(windowController) - Configuration.UI_MODE_NIGHT_YES -> setDarkModeSystemBars(windowController) + AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM -> when (isNightMode(activity)) { + false -> setLightModeSystemBars(windowController) + true -> setDarkModeSystemBars(windowController) } AppCompatDelegate.MODE_NIGHT_NO -> setLightModeSystemBars(windowController) AppCompatDelegate.MODE_NIGHT_YES -> setDarkModeSystemBars(windowController) } } + private fun isNightMode(activity: AppCompatActivity): Boolean { + return when (activity.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) { + Configuration.UI_MODE_NIGHT_NO -> false + Configuration.UI_MODE_NIGHT_YES -> true + else -> false + } + } + private fun setLightModeSystemBars(windowController: WindowInsetsControllerCompat) { windowController.isAppearanceLightStatusBars = true windowController.isAppearanceLightNavigationBars = true