From b01eb151f8aa40d11c4251a3033096e86b65ff9f Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sun, 26 Feb 2023 13:40:02 +0100 Subject: [PATCH] Improve swipe gesture cancellation in pager layout --- .../java/de/mm20/launcher2/ui/gestures/GestureDetector.kt | 2 +- .../java/de/mm20/launcher2/ui/launcher/PagerScaffold.kt | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/gestures/GestureDetector.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/gestures/GestureDetector.kt index fe333c4d..c34f3cae 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/gestures/GestureDetector.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/gestures/GestureDetector.kt @@ -8,7 +8,7 @@ import androidx.compose.ui.geometry.Offset class GestureDetector { private var dragStart: Offset? = null - private var currentDrag : Offset? = null + var currentDrag : Offset? = null var gestureListener: OnGestureListener? = null diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/PagerScaffold.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/PagerScaffold.kt index 1cc32036..c643c52b 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/PagerScaffold.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/PagerScaffold.kt @@ -259,6 +259,14 @@ fun PagerScaffold( val nestedScrollConnection = remember { object : NestedScrollConnection { + override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset { + val drag = gestureManager.currentDrag + if (drag != null && (drag.y > 0 || (reverse && drag.x < 0 || !reverse && drag.x > 0))) { + gestureManager.dispatchDrag(available) + return available + } + return super.onPreScroll(available, source) + } override fun onPostScroll( consumed: Offset, available: Offset,