From ba1172b82292c9f5bdfee4332f7c64d647d97e01 Mon Sep 17 00:00:00 2001 From: Jean-Luc Makiola Date: Thu, 22 Oct 2026 08:43:26 +0200 Subject: [PATCH] fix(alarms): keep a settling card from overshooting past its rest --- .../java/de/jeanlucmakiola/clockula/ui/common/SwipeToDelete.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/de/jeanlucmakiola/clockula/ui/common/SwipeToDelete.kt b/app/src/main/java/de/jeanlucmakiola/clockula/ui/common/SwipeToDelete.kt index b369e0e..548ee40 100644 --- a/app/src/main/java/de/jeanlucmakiola/clockula/ui/common/SwipeToDelete.kt +++ b/app/src/main/java/de/jeanlucmakiola/clockula/ui/common/SwipeToDelete.kt @@ -75,7 +75,8 @@ internal fun SwipeToDelete( val flingVelocity = with(LocalDensity.current) { FlingVelocity.toPx() } // How far the card has travelled towards the end edge: 0 at rest, never negative. - val travel = remember { Animatable(0f) } + // Bounded below, so the settle spring cannot overshoot the card past its rest. + val travel = remember { Animatable(0f).apply { updateBounds(lowerBound = 0f) } } var width by remember { mutableIntStateOf(0) } // Derived, so a drag recomposes this once as the red appears, not per frame. val revealed by remember { derivedStateOf { travel.value > 0f } }