Fixes screen mispositioning when rotating full screen video/image dialogs.

This commit is contained in:
Vitor Pamplona
2024-11-29 16:40:07 -05:00
parent 2c825d5380
commit bd2005ec6e

View File

@@ -54,7 +54,6 @@ import androidx.compose.material3.Surface
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.MutableState import androidx.compose.runtime.MutableState
import androidx.compose.runtime.SideEffect
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@@ -106,7 +105,7 @@ fun ZoomableImageDialog(
onDismissRequest = onDismiss, onDismissRequest = onDismiss,
properties = properties =
DialogProperties( DialogProperties(
usePlatformDefaultWidth = true, usePlatformDefaultWidth = false,
decorFitsSystemWindows = false, decorFitsSystemWindows = false,
), ),
) { ) {
@@ -118,27 +117,26 @@ fun ZoomableImageDialog(
val activityWindow = getActivityWindow() val activityWindow = getActivityWindow()
val dialogWindow = getDialogWindow() val dialogWindow = getDialogWindow()
val parentView = LocalView.current.parent as View val parentView = LocalView.current.parent as View
SideEffect {
if (activityWindow != null && dialogWindow != null) { if (activityWindow != null && dialogWindow != null) {
val attributes = WindowManager.LayoutParams() val attributes = WindowManager.LayoutParams()
attributes.copyFrom(activityWindow.attributes) attributes.copyFrom(activityWindow.attributes)
attributes.type = dialogWindow.attributes.type attributes.type = dialogWindow.attributes.type
dialogWindow.attributes = attributes dialogWindow.attributes = attributes
parentView.layoutParams = parentView.layoutParams =
FrameLayout.LayoutParams( FrameLayout.LayoutParams(
activityWindow.decorView.width, activityWindow.decorView.width,
activityWindow.decorView.height, activityWindow.decorView.height,
) )
view.layoutParams = view.layoutParams =
FrameLayout.LayoutParams( FrameLayout.LayoutParams(
activityWindow.decorView.width, activityWindow.decorView.width,
activityWindow.decorView.height, activityWindow.decorView.height,
) )
}
} }
Surface(modifier = Modifier.fillMaxSize()) { Surface(Modifier.fillMaxSize()) {
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.TopCenter) { Box(Modifier.fillMaxSize(), Alignment.TopCenter) {
DialogContent(allImages, imageUrl, onDismiss, accountViewModel) DialogContent(allImages, imageUrl, onDismiss, accountViewModel)
} }
} }