From 1767cc74a978bbfd8329393993a0488990dd99db Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sun, 15 Oct 2023 17:15:48 -0400 Subject: [PATCH] Activates images controllers on click --- .../ui/components/ZoomableContentView.kt | 36 ++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt index 40060becc..bad300526 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt @@ -12,6 +12,7 @@ import androidx.compose.animation.fadeOut import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.clickable import androidx.compose.foundation.combinedClickable +import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxWithConstraints @@ -696,6 +697,9 @@ private fun DialogContent( onControllerVisibilityChanged = { controllerVisible.value = it }, + onToggleControllerVisibility = { + controllerVisible.value = !controllerVisible.value + }, accountViewModel = accountViewModel ) } @@ -707,6 +711,9 @@ private fun DialogContent( onControllerVisibilityChanged = { controllerVisible.value = it }, + onToggleControllerVisibility = { + controllerVisible.value = !controllerVisible.value + }, accountViewModel = accountViewModel ) } @@ -815,13 +822,22 @@ private fun RenderImageOrVideo( roundedCorner: Boolean, topPaddingForControllers: Dp = Dp.Unspecified, onControllerVisibilityChanged: ((Boolean) -> Unit)? = null, + onToggleControllerVisibility: (() -> Unit)? = null, accountViewModel: AccountViewModel ) { - val mainModifier = Modifier - .fillMaxSize() - .zoomable(rememberZoomState()) - if (content is ZoomableUrlImage) { + val mainModifier = Modifier + .fillMaxSize() + .zoomable(rememberZoomState()) + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null // Avoid flashing on click + ) { + if (onToggleControllerVisibility != null) { + onToggleControllerVisibility() + } + } + UrlImageView( content = content, mainImageModifier = mainModifier, @@ -844,6 +860,18 @@ private fun RenderImageOrVideo( ) } } else if (content is ZoomableLocalImage) { + val mainModifier = Modifier + .fillMaxSize() + .zoomable(rememberZoomState()) + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null // Avoid flashing on click + ) { + if (onToggleControllerVisibility != null) { + onToggleControllerVisibility() + } + } + LocalImageView( content = content, mainImageModifier = mainModifier,