From e08e9a370c5531e8989470dd2502f7ac6a8c7342 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sun, 1 Oct 2023 21:35:36 +0200 Subject: [PATCH] Fix z order of popups --- .../mm20/launcher2/ui/component/BottomSheetDialog.kt | 10 +++------- .../ui/launcher/search/common/grid/GridItem.kt | 2 +- .../ui/launcher/sheets/CustomizeSearchableSheet.kt | 3 ++- .../java/de/mm20/launcher2/ui/overlays/Overlay.kt | 2 +- .../de/mm20/launcher2/ui/overlays/OverlayHost.kt | 12 ++++++++++-- 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/component/BottomSheetDialog.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/component/BottomSheetDialog.kt index 932195ad..62782b8d 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/component/BottomSheetDialog.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/component/BottomSheetDialog.kt @@ -66,6 +66,7 @@ import androidx.compose.ui.window.Popup import androidx.compose.ui.window.PopupPositionProvider import androidx.compose.ui.window.PopupProperties import de.mm20.launcher2.ui.ktx.toPixels +import de.mm20.launcher2.ui.overlays.LocalZIndex import de.mm20.launcher2.ui.overlays.Overlay import kotlinx.coroutines.launch import kotlin.math.min @@ -79,6 +80,7 @@ fun BottomSheetDialog( confirmButton: @Composable (() -> Unit)? = null, dismissButton: @Composable (() -> Unit)? = null, dismissible: () -> Boolean = { true }, + zIndex: Float = LocalZIndex.current + 1f, content: @Composable (paddingValues: PaddingValues) -> Unit, ) { val scope = rememberCoroutineScope() @@ -155,13 +157,7 @@ fun BottomSheetDialog( CompositionLocalProvider( LocalAbsoluteTonalElevation provides 0.dp, ) { - val density = LocalDensity.current - val insets = WindowInsets.systemBars - WindowInsets - val positionProvider = remember(insets, density) { - BottomSheetPositionProvider(insets, density) - } - Overlay(zIndex = 9999f) { + Overlay(zIndex = zIndex) { BoxWithConstraints( modifier = Modifier .fillMaxSize() diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt index 1792d2be..af5bc127 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt @@ -207,7 +207,7 @@ fun ItemPopup(origin: Rect, searchable: Searchable, onDismissRequest: () -> Unit show.targetState = false } - Overlay(zIndex = 1f) { + Overlay { Box( modifier = Modifier .background(MaterialTheme.colorScheme.scrim.copy(alpha = 0.32f * animationProgress.value)) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/CustomizeSearchableSheet.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/CustomizeSearchableSheet.kt index ae5adca3..ef8455e2 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/CustomizeSearchableSheet.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/CustomizeSearchableSheet.kt @@ -92,7 +92,8 @@ fun CustomizeSearchableSheet( Text(stringResource(id = android.R.string.cancel)) } } - } else null + } else null, + zIndex = 100f, ) { if (!pickIcon) { Column( diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/overlays/Overlay.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/overlays/Overlay.kt index edf2e7a3..01739b72 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/overlays/Overlay.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/overlays/Overlay.kt @@ -5,7 +5,7 @@ import androidx.compose.runtime.DisposableEffect @Composable fun Overlay( - zIndex: Float = 0f, + zIndex: Float = LocalZIndex.current + 1f, overlay: @Composable () -> Unit ) { val overlayManager = LocalOverlayManager.current diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/overlays/OverlayHost.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/overlays/OverlayHost.kt index e85bbe4c..5aa7e213 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/overlays/OverlayHost.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/overlays/OverlayHost.kt @@ -26,8 +26,12 @@ fun OverlayHost( content() } for (overlay in overlayManager.overlays) { - Box(modifier = Modifier.zIndex(overlay.zIndex + 1f)) { - overlay() + Box(modifier = Modifier.zIndex(overlay.zIndex)) { + CompositionLocalProvider( + LocalZIndex provides overlay.zIndex + ) { + overlay() + } } } } @@ -36,4 +40,8 @@ fun OverlayHost( val LocalOverlayManager = compositionLocalOf { OverlayManager() +} + +val LocalZIndex = compositionLocalOf { + 0f } \ No newline at end of file