Fix inability to zoom on the edges of an image when the initially displayed image has a different width/height ratio

This commit is contained in:
Pierre-Yves Nicolas
2025-09-02 16:56:29 +02:00
parent edf1c6debd
commit 3dbdfe0e32

View File

@@ -42,6 +42,7 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.MutableIntState import androidx.compose.runtime.MutableIntState
import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -51,7 +52,7 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import net.engawapg.lib.zoomable.rememberZoomState import net.engawapg.lib.zoomable.ZoomState
import net.engawapg.lib.zoomable.zoomable import net.engawapg.lib.zoomable.zoomable
import org.fairscan.app.Navigation import org.fairscan.app.Navigation
import org.fairscan.app.R import org.fairscan.app.R
@@ -138,13 +139,12 @@ private fun DocumentPreview(
val bitmap = document.load(currentPageIndex.intValue) val bitmap = document.load(currentPageIndex.intValue)
if (bitmap != null) { if (bitmap != null) {
val imageBitmap = bitmap.asImageBitmap() val imageBitmap = bitmap.asImageBitmap()
val zoomState = rememberZoomState( val zoomState = remember(imageId) {
ZoomState(
contentSize = Size(bitmap.width.toFloat(), bitmap.height.toFloat()) contentSize = Size(bitmap.width.toFloat(), bitmap.height.toFloat())
) )
LaunchedEffect(imageId) {
zoomState.reset()
} }
Box(modifier = Modifier Box(modifier = Modifier
.fillMaxSize(0.92f) .fillMaxSize(0.92f)
.align(Alignment.Center)) { .align(Alignment.Center)) {