From 3d91e23733ae0657ed8d8ec462b3ac4a7876a28c Mon Sep 17 00:00:00 2001 From: vfsfitvnm Date: Fri, 10 Jun 2022 15:04:42 +0200 Subject: [PATCH] Use detectTapGestures in SeekBar --- .../vimusic/ui/components/SeekBar.kt | 26 ++++++------------- 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/SeekBar.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/SeekBar.kt index 3fd1cf7..063605a 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/SeekBar.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/SeekBar.kt @@ -1,9 +1,8 @@ package it.vfsfitvnm.vimusic.ui.components import androidx.compose.foundation.background -import androidx.compose.foundation.gestures.awaitFirstDown import androidx.compose.foundation.gestures.detectHorizontalDragGestures -import androidx.compose.foundation.gestures.forEachGesture +import androidx.compose.foundation.gestures.detectTapGestures import androidx.compose.foundation.layout.* import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -12,8 +11,6 @@ import androidx.compose.ui.draw.drawWithContent import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.graphics.Shape -import androidx.compose.ui.input.pointer.PointerEventPass -import androidx.compose.ui.input.pointer.changedToUp import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp @@ -50,21 +47,14 @@ fun SeekBar( } .pointerInput(minimumValue, maximumValue) { if (maximumValue < minimumValue) return@pointerInput - - forEachGesture { - awaitPointerEventScope { - val position = awaitFirstDown(requireUnconsumed = false) - onDragStart((position.position.x / size.width * (maximumValue - minimumValue)).roundToLong()) - - position.consume() - - if (awaitPointerEvent(PointerEventPass.Initial).changes.firstOrNull() - ?.changedToUp() == true - ) { - onDragEnd() - } + detectTapGestures( + onPress = { offset -> + onDragStart((offset.x / size.width * (maximumValue - minimumValue)).roundToLong()) + }, + onTap = { + onDragEnd() } - } + ) } .padding(horizontal = scrubberRadius) .drawWithContent {