From 6e93efce0c257fcd1c56a9dbb74dd2d4fdd627b4 Mon Sep 17 00:00:00 2001 From: cartland Date: Mon, 28 Jul 2025 23:28:59 -0700 Subject: [PATCH 1/2] Fix drawer animation logic The drawer animation logic had a bug where it would not properly animate the drawer to the correct position. This commit fixes the issue by adjusting the conditions that determine whether the drawer can reach the target position with decay. Specifically, it checks if `actualTargetX > 0f` instead of `targetDifference > 0f` and `actualTargetX == 0f` instead of `targetDifference < 0f`. --- .../src/main/java/com/example/jetlagged/JetLaggedDrawer.kt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/JetLagged/app/src/main/java/com/example/jetlagged/JetLaggedDrawer.kt b/JetLagged/app/src/main/java/com/example/jetlagged/JetLaggedDrawer.kt index 29bee4cb5..cb1be6651 100644 --- a/JetLagged/app/src/main/java/com/example/jetlagged/JetLaggedDrawer.kt +++ b/JetLagged/app/src/main/java/com/example/jetlagged/JetLaggedDrawer.kt @@ -158,18 +158,16 @@ fun HomeScreenDrawer(windowSizeClass: WindowSizeClass) { } else { 0f } - // checking if the difference between the target and actual is + or - - val targetDifference = (actualTargetX - targetOffsetX) val canReachTargetWithDecay = ( targetOffsetX > actualTargetX && velocity > 0f && - targetDifference > 0f + actualTargetX > 0f ) || ( targetOffsetX < actualTargetX && velocity < 0 && - targetDifference < 0f + actualTargetX == 0f ) if (canReachTargetWithDecay) { translationX.animateDecay( From dd331c9053c3c6f5375e3ba8f6fed80df00ae454 Mon Sep 17 00:00:00 2001 From: cartland Date: Tue, 29 Jul 2025 00:55:37 -0700 Subject: [PATCH 2/2] Improve readability of canReachTargetWithDecay with if-else --- .../com/example/jetlagged/JetLaggedDrawer.kt | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/JetLagged/app/src/main/java/com/example/jetlagged/JetLaggedDrawer.kt b/JetLagged/app/src/main/java/com/example/jetlagged/JetLaggedDrawer.kt index cb1be6651..184729ecb 100644 --- a/JetLagged/app/src/main/java/com/example/jetlagged/JetLaggedDrawer.kt +++ b/JetLagged/app/src/main/java/com/example/jetlagged/JetLaggedDrawer.kt @@ -158,17 +158,13 @@ fun HomeScreenDrawer(windowSizeClass: WindowSizeClass) { } else { 0f } - val canReachTargetWithDecay = - ( - targetOffsetX > actualTargetX && - velocity > 0f && - actualTargetX > 0f - ) || - ( - targetOffsetX < actualTargetX && - velocity < 0 && - actualTargetX == 0f - ) + val canReachTargetWithDecay = if (actualTargetX > 0f) { + // We are aiming for the open state, check if the fling is strong enough to overshoot. + velocity > 0f && targetOffsetX > actualTargetX + } else { + // We are aiming for the closed state, check if the fling is strong enough to overshoot. + velocity < 0f && targetOffsetX < actualTargetX + } if (canReachTargetWithDecay) { translationX.animateDecay( initialVelocity = velocity,