From 895f75a3c5b24a1941c1e55cc5a83199f0ec0cac Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Tue, 8 Jul 2025 21:46:33 +0800 Subject: [PATCH] Fix navigation drawer overlapping side sheet --- .../kotlin/androidx/compose/material3/SideDrawer.kt | 2 +- .../main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt | 1 + .../kotlin/com/hippo/ehviewer/ui/MutableSideSheet.kt | 11 ++++------- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/app/src/main/kotlin/androidx/compose/material3/SideDrawer.kt b/app/src/main/kotlin/androidx/compose/material3/SideDrawer.kt index f6f937725..f67e002bb 100644 --- a/app/src/main/kotlin/androidx/compose/material3/SideDrawer.kt +++ b/app/src/main/kotlin/androidx/compose/material3/SideDrawer.kt @@ -81,7 +81,7 @@ class DrawerState2(initialValue: DrawerValue) { */ val currentValue: DrawerValue get() { - return anchoredDraggableState.currentValue + return anchoredDraggableState.settledValue } /** diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt index a971f0ead..586052257 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt @@ -428,6 +428,7 @@ class MainActivity : EhActivity() { } }.collectAsState(0f) MutableSideSheet( + drawerState = sideSheetState, modifier = Modifier.graphicsLayer { if (radius != 0f) { renderEffect = BlurEffect(radius, radius, TileMode.Clamp) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/MutableSideSheet.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/MutableSideSheet.kt index c969b76bb..6a85a6c03 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/MutableSideSheet.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/MutableSideSheet.kt @@ -8,11 +8,9 @@ import androidx.compose.foundation.layout.systemBars import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.shape.CornerSize import androidx.compose.material3.DrawerState2 -import androidx.compose.material3.DrawerValue import androidx.compose.material3.ModalDrawerSheet import androidx.compose.material3.ModalSideDrawer import androidx.compose.material3.ShapeDefaults -import androidx.compose.material3.rememberDrawerState2 import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.DisposableEffect @@ -40,12 +38,11 @@ fun ProvideSideSheetContent(content: Sheet) { } @Composable -fun MutableSideSheet(modifier: Modifier, enabled: Boolean, content: @Composable () -> Unit) { +fun MutableSideSheet(drawerState: DrawerState2, modifier: Modifier, enabled: Boolean, content: @Composable () -> Unit) { val sheet = remember { mutableStateListOf() } val f = sheet.firstOrNull() - val state = rememberDrawerState2(DrawerValue.Closed) val width = with(LocalDensity.current) { LocalWindowInfo.current.containerSize.width.toDp() } - CompositionLocalProvider(LocalSideSheetState provides state, LocalSideSheetContainer provides sheet) { + CompositionLocalProvider(LocalSideSheetContainer provides sheet) { ModalSideDrawer( drawerContent = { if (f != null) { @@ -54,12 +51,12 @@ fun MutableSideSheet(modifier: Modifier, enabled: Boolean, content: @Composable drawerShape = ShapeDefaults.Large.copy(topEnd = CornerSize(0), bottomEnd = CornerSize(0)), windowInsets = WindowInsets.systemBars.only(WindowInsetsSides.Top + WindowInsetsSides.End), ) { - f(state) + f(drawerState) } } }, modifier = modifier, - drawerState = state, + drawerState = drawerState, gesturesEnabled = f != null && enabled, content = content, )