diff --git a/cascade-compose/src/androidTest/kotlin/me/saket/cascade/CascadePopupAlignmentTest.kt b/cascade-compose/src/androidTest/kotlin/me/saket/cascade/CascadePopupAlignmentTest.kt index 902d3e0..650e655 100644 --- a/cascade-compose/src/androidTest/kotlin/me/saket/cascade/CascadePopupAlignmentTest.kt +++ b/cascade-compose/src/androidTest/kotlin/me/saket/cascade/CascadePopupAlignmentTest.kt @@ -23,7 +23,6 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Shapes import androidx.compose.material3.Text import androidx.compose.material3.lightColorScheme -import androidx.compose.material3.surfaceColorAtElevation import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -276,8 +275,8 @@ internal class CascadePopupAlignmentTest { } } + /** Screenshots the entire device instead of just the active Activity's content. */ private fun Dropshots.assertDeviceSnapshot(nameSuffix: String? = null) { - // This screenshots the entire device instead of just the active Activity's content. val screenshot: Bitmap = takeScreenshot() // The navigation bar's handle cross-fades its color smoothly and can @@ -285,7 +284,7 @@ internal class CascadePopupAlignmentTest { val navigationBarHeightInPx = composeTestRule.activity.resources.run { getDimensionPixelSize(getIdentifier("navigation_bar_height", "dimen", "android")) } - val screenshotWithoutNavBars: Bitmap = Bitmap.createBitmap( + val screenshotWithoutNavBar: Bitmap = Bitmap.createBitmap( /* source = */ screenshot, /* x = */ 0, /* y = */ 0, @@ -294,7 +293,7 @@ internal class CascadePopupAlignmentTest { ) assertSnapshot( - bitmap = screenshotWithoutNavBars, + bitmap = screenshotWithoutNavBar, name = testName.methodName + (if (nameSuffix != null) "_$nameSuffix" else "") ) } diff --git a/cascade-compose/src/main/java/me/saket/cascade/Cascade.kt b/cascade-compose/src/main/java/me/saket/cascade/Cascade.kt index a5fa07e..b0030b1 100644 --- a/cascade-compose/src/main/java/me/saket/cascade/Cascade.kt +++ b/cascade-compose/src/main/java/me/saket/cascade/Cascade.kt @@ -58,6 +58,7 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.DpOffset +import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Popup import androidx.compose.ui.window.PopupProperties @@ -67,6 +68,7 @@ import kotlinx.coroutines.flow.onEach import me.saket.cascade.internal.AnimateEntryExit import me.saket.cascade.internal.CoercePositiveValues import me.saket.cascade.internal.DropdownMenuPositionProvider +import me.saket.cascade.internal.FixedPopupPositionProvider import me.saket.cascade.internal.MinSdkReader import me.saket.cascade.internal.PositionPopupContent import me.saket.cascade.internal.RealMinSdkReader @@ -158,7 +160,9 @@ fun CascadeDropdownMenu( Popup( onDismissRequest = onDismissRequest, properties = properties.copy(usePlatformDefaultWidth = false), + popupPositionProvider = remember { FixedPopupPositionProvider(IntOffset.Zero) } ) { + PositionPopupContent( modifier = Modifier .fillMaxSize()