HapeLee 3 месяцев назад
Родитель
Сommit
aca49b3e17
2 измененных файлов с 17 добавлено и 10 удалено
  1. 16 9
      app/src/main/java/io/legado/app/ui/theme/ThemeComponents.kt
  2. 1 1
      app/version.properties

+ 16 - 9
app/src/main/java/io/legado/app/ui/theme/ThemeComponents.kt

@@ -16,6 +16,7 @@ import androidx.compose.ui.graphics.compositeOver
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.text.font.FontFamily
 import io.legado.app.ui.config.themeConfig.ThemeConfig
+import top.yukonga.miuix.kmp.theme.ColorSchemeMode
 import top.yukonga.miuix.kmp.theme.MiuixTheme
 import top.yukonga.miuix.kmp.theme.ThemeController
 
@@ -50,14 +51,21 @@ fun MiuixThemeWrapper(
     customFontFamily: FontFamily?,
     content: @Composable () -> Unit
 ) {
-    val themeModeValue = ThemeConfig.themeMode
     val useMiuixMonet = ThemeConfig.useMiuixMonet
     val paletteStyleValue = ThemeConfig.paletteStyle
     val materialVersion = ThemeConfig.materialVersion
     val darkTheme = themeColors.isDark
-    
-    val miuixColorSchemeMode = remember(themeModeValue, useMiuixMonet) {
-        ThemeResolver.resolveMiuixColorSchemeMode(themeModeValue, useMiuixMonet)
+
+    // AppTheme has already resolved system mode to an explicit light/dark value.
+    // Do not pass System/MonetSystem to Miuix here: MainActivity handles uiMode
+    // changes without recreation, so Miuix must not read a second, stale system mode.
+    val miuixColorSchemeMode = remember(darkTheme, useMiuixMonet) {
+        when {
+            useMiuixMonet && darkTheme -> ColorSchemeMode.MonetDark
+            useMiuixMonet -> ColorSchemeMode.MonetLight
+            darkTheme -> ColorSchemeMode.Dark
+            else -> ColorSchemeMode.Light
+        }
     }
     val miuixPaletteStyle = remember(paletteStyleValue) {
         ThemeResolver.resolveMiuixPaletteStyle(paletteStyleValue)
@@ -110,11 +118,10 @@ fun MiuixThemeWrapper(
         val miuixColorScheme = MiuixTheme.colorScheme
         val customColors = ThemeConfig.customThemeColors(darkTheme)
         val isDeepPersonalizationActive = ThemeConfig.isDeepPersonalizationActive
-        val mappedColorScheme = remember(
-            miuixColorScheme,
-            customColors,
-            isDeepPersonalizationActive,
-        ) {
+        // MiuixTheme keeps one Colors instance and updates its state-backed fields in place.
+        // Caching by miuixColorScheme would therefore retain an obsolete LegadoColorScheme
+        // after a light/dark change.
+        val mappedColorScheme = run {
             val customBgColor = if (isDeepPersonalizationActive && customColors.background != 0) {
                 Color(customColors.background)
             } else {

+ 1 - 1
app/version.properties

@@ -1,5 +1,5 @@
 VERSION_MAJOR=3
 VERSION_MINOR=26
-VERSION_PATCH=14
+VERSION_PATCH=15
 VERSION_SUFFIX=0
 # 1 = Pre, 0 = Release