|
@@ -16,6 +16,7 @@ import androidx.compose.ui.graphics.compositeOver
|
|
|
import androidx.compose.ui.platform.LocalContext
|
|
import androidx.compose.ui.platform.LocalContext
|
|
|
import androidx.compose.ui.text.font.FontFamily
|
|
import androidx.compose.ui.text.font.FontFamily
|
|
|
import io.legado.app.ui.config.themeConfig.ThemeConfig
|
|
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.MiuixTheme
|
|
|
import top.yukonga.miuix.kmp.theme.ThemeController
|
|
import top.yukonga.miuix.kmp.theme.ThemeController
|
|
|
|
|
|
|
@@ -50,14 +51,21 @@ fun MiuixThemeWrapper(
|
|
|
customFontFamily: FontFamily?,
|
|
customFontFamily: FontFamily?,
|
|
|
content: @Composable () -> Unit
|
|
content: @Composable () -> Unit
|
|
|
) {
|
|
) {
|
|
|
- val themeModeValue = ThemeConfig.themeMode
|
|
|
|
|
val useMiuixMonet = ThemeConfig.useMiuixMonet
|
|
val useMiuixMonet = ThemeConfig.useMiuixMonet
|
|
|
val paletteStyleValue = ThemeConfig.paletteStyle
|
|
val paletteStyleValue = ThemeConfig.paletteStyle
|
|
|
val materialVersion = ThemeConfig.materialVersion
|
|
val materialVersion = ThemeConfig.materialVersion
|
|
|
val darkTheme = themeColors.isDark
|
|
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) {
|
|
val miuixPaletteStyle = remember(paletteStyleValue) {
|
|
|
ThemeResolver.resolveMiuixPaletteStyle(paletteStyleValue)
|
|
ThemeResolver.resolveMiuixPaletteStyle(paletteStyleValue)
|
|
@@ -110,11 +118,10 @@ fun MiuixThemeWrapper(
|
|
|
val miuixColorScheme = MiuixTheme.colorScheme
|
|
val miuixColorScheme = MiuixTheme.colorScheme
|
|
|
val customColors = ThemeConfig.customThemeColors(darkTheme)
|
|
val customColors = ThemeConfig.customThemeColors(darkTheme)
|
|
|
val isDeepPersonalizationActive = ThemeConfig.isDeepPersonalizationActive
|
|
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) {
|
|
val customBgColor = if (isDeepPersonalizationActive && customColors.background != 0) {
|
|
|
Color(customColors.background)
|
|
Color(customColors.background)
|
|
|
} else {
|
|
} else {
|