@@ -81,34 +81,23 @@ fun ListPopup(
8181 val density = LocalDensity .current
8282 val layoutDirection = LocalLayoutDirection .current
8383
84- val displayCutoutPaddings = WindowInsets .displayCutout.asPaddingValues()
85- val statusBarsPaddings = WindowInsets .statusBars.asPaddingValues()
86- val navigationBarsPaddings = WindowInsets .navigationBars.asPaddingValues()
87- val captionBarPaddings = WindowInsets .captionBar.asPaddingValues()
88-
8984 val getWindowSizeState = rememberUpdatedState(getWindowSize())
9085 var windowSize by remember { mutableStateOf(IntSize (getWindowSizeState.value.width, getWindowSizeState.value.height)) }
9186 var parentBounds by remember { mutableStateOf(IntRect .Zero ) }
9287
93- val rememberedWindowBounds = remember(
94- windowSize,
95- layoutDirection,
96- density,
97- displayCutoutPaddings,
98- statusBarsPaddings,
99- navigationBarsPaddings,
100- captionBarPaddings
101- ) {
88+ val windowBounds by rememberUpdatedState(
10289 with (density) {
10390 IntRect (
104- left = displayCutoutPaddings.calculateLeftPadding(layoutDirection).roundToPx(),
105- top = statusBarsPaddings.calculateTopPadding().roundToPx(),
106- right = windowSize.width - displayCutoutPaddings.calculateRightPadding(layoutDirection).roundToPx(),
107- bottom = windowSize.height - navigationBarsPaddings.calculateBottomPadding()
108- .roundToPx() - captionBarPaddings.calculateBottomPadding().roundToPx()
91+ left = WindowInsets .displayCutout.asPaddingValues(density).calculateLeftPadding(layoutDirection).roundToPx(),
92+ top = WindowInsets .statusBars.asPaddingValues().calculateTopPadding().roundToPx(),
93+ right = windowSize.width -
94+ WindowInsets .displayCutout.asPaddingValues(density).calculateRightPadding(layoutDirection).roundToPx(),
95+ bottom = windowSize.height -
96+ WindowInsets .navigationBars.asPaddingValues().calculateBottomPadding().roundToPx() -
97+ WindowInsets .captionBar.asPaddingValues().calculateBottomPadding().roundToPx()
10998 )
11099 }
111- }
100+ )
112101
113102 var popupContentSize by remember { mutableStateOf(IntSize .Zero ) }
114103
@@ -181,7 +170,7 @@ fun ListPopup(
181170 maxHeight,
182171 popupPositionProvider,
183172 parentBounds,
184- rememberedWindowBounds ,
173+ windowBounds ,
185174 layoutDirection,
186175 rememberedPopupMargin,
187176 alignment,
@@ -199,7 +188,7 @@ fun ListPopup(
199188 minWidth = if (minWidth.roundToPx() <= windowSize.width) minWidth.roundToPx() else windowSize.width,
200189 minHeight = if (50 .dp.roundToPx() <= windowSize.height) 50 .dp.roundToPx() else windowSize.height,
201190 maxHeight = maxHeight?.roundToPx()?.coerceAtLeast(50 .dp.roundToPx())
202- ? : (rememberedWindowBounds .height - rememberedPopupMargin.top - rememberedPopupMargin.bottom).coerceAtLeast(
191+ ? : (windowBounds .height - rememberedPopupMargin.top - rememberedPopupMargin.bottom).coerceAtLeast(
203192 50 .dp.roundToPx()
204193 ),
205194 maxWidth = if (minWidth.roundToPx() <= windowSize.width) windowSize.width else minWidth.roundToPx()
@@ -212,7 +201,7 @@ fun ListPopup(
212201
213202 val calculatedOffset = popupPositionProvider.calculatePosition(
214203 parentBounds,
215- rememberedWindowBounds ,
204+ windowBounds ,
216205 layoutDirection,
217206 measuredSize,
218207 rememberedPopupMargin,
0 commit comments