From 7a5c531a24dafcb69deb779dd579288b82c95325 Mon Sep 17 00:00:00 2001 From: tapframe <85391825+tapframe@users.noreply.github.com> Date: Sun, 17 May 2026 19:19:38 +0530 Subject: [PATCH] fix: hiding of controls while scrubbing is active fixes #1100 --- .../nuvio/app/features/player/PlayerScreen.kt | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerScreen.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerScreen.kt index fa29d9db..34ac6e92 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerScreen.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerScreen.kt @@ -228,6 +228,7 @@ fun PlayerScreen( val keepScreenAwake = errorMessage == null && (playbackSnapshot.isPlaying || (shouldPlay && playbackSnapshot.isLoading)) EnterImmersivePlayerMode(keepScreenAwake = keepScreenAwake) + var isScrubbingTimeline by remember { mutableStateOf(false) } var scrubbingPositionMs by remember { mutableStateOf(null) } var pausedOverlayVisible by remember { mutableStateOf(false) } var gestureFeedback by remember { mutableStateOf(null) } @@ -600,6 +601,7 @@ fun PlayerScreen( controlsVisible = false lockedOverlayVisible = false pausedOverlayVisible = false + isScrubbingTimeline = false scrubbingPositionMs = null gestureMessageJob?.cancel() gestureFeedback = null @@ -1228,6 +1230,7 @@ fun PlayerScreen( playerController = null playerControllerSourceUrl = null playbackSnapshot = PlayerPlaybackSnapshot() + isScrubbingTimeline = false scrubbingPositionMs = null liveGestureFeedback = null renderedGestureFeedback = null @@ -1325,8 +1328,22 @@ fun PlayerScreen( initialSeekApplied = true } - LaunchedEffect(controlsVisible, playbackSnapshot.isPlaying, playbackSnapshot.isLoading, showParentalGuide, errorMessage) { - if (!controlsVisible || !playbackSnapshot.isPlaying || playbackSnapshot.isLoading || showParentalGuide || errorMessage != null) { + LaunchedEffect( + controlsVisible, + isScrubbingTimeline, + playbackSnapshot.isPlaying, + playbackSnapshot.isLoading, + showParentalGuide, + errorMessage, + ) { + if ( + !controlsVisible || + isScrubbingTimeline || + !playbackSnapshot.isPlaying || + playbackSnapshot.isLoading || + showParentalGuide || + errorMessage != null + ) { return@LaunchedEffect } delay(3500) @@ -1794,8 +1811,12 @@ fun PlayerScreen( parentalWarnings = parentalWarnings, showParentalGuide = showParentalGuide, onParentalGuideAnimationComplete = { showParentalGuide = false }, - onScrubChange = { positionMs -> scrubbingPositionMs = positionMs }, + onScrubChange = { positionMs -> + isScrubbingTimeline = true + scrubbingPositionMs = positionMs + }, onScrubFinished = { positionMs -> + isScrubbingTimeline = false scrubbingPositionMs = null playerController?.seekTo(positionMs) },