From bbdafdf12b29641b08de69a062e00388bfec9419 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Fri, 10 May 2024 13:20:37 +0200 Subject: [PATCH] Disable pager scroll in widget edit mode Close #785 --- .../launcher2/ui/launcher/PagerScaffold.kt | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) 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 cd04dcd6..e50a1d91 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 @@ -324,7 +324,7 @@ fun PagerScaffold( available: Offset, source: NestedScrollSource ): Offset { - if (source == NestedScrollSource.Drag && !isWidgetEditMode && available != Offset.Zero) { + if (source == NestedScrollSource.UserInput && !isWidgetEditMode && available != Offset.Zero) { gestureManager.dispatchDrag(available) } val deltaSearchBarOffset = @@ -365,7 +365,7 @@ fun PagerScaffold( val searchNestedScrollConnection = remember { object : NestedScrollConnection { override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset { - if (source == NestedScrollSource.Drag && available.y.absoluteValue > available.x.absoluteValue * 2) { + if (source == NestedScrollSource.UserInput && available.y.absoluteValue > available.x.absoluteValue * 2) { viewModel.setSearchbarFocus(false) searchVM.bestMatch.value = null } @@ -689,19 +689,20 @@ fun Modifier.pagerScaffoldScrollHandler( scope.launch { val preConsumed = nestedScrollDispatcher.dispatchPreScroll( dragAmount, - NestedScrollSource.Drag + NestedScrollSource.UserInput ) val available = dragAmount - preConsumed val consumedY = scrollableState.scrollBy(available.y * scrollMultiplier) * scrollMultiplier val consumedX = - pagerState.scrollBy(available.x * pagerMultiplier) * pagerMultiplier + if (disablePager) 0f + else pagerState.scrollBy(available.x * pagerMultiplier) * pagerMultiplier val totalConsumed = Offset(preConsumed.x + consumedX, preConsumed.y + consumedY) nestedScrollDispatcher.dispatchPostScroll( totalConsumed, dragAmount - totalConsumed, - NestedScrollSource.Drag + NestedScrollSource.UserInput ) } } @@ -713,14 +714,16 @@ fun Modifier.pagerScaffoldScrollHandler( val preConsumed = nestedScrollDispatcher.dispatchPreFling(velocity) val flingVelocity = (velocity - preConsumed).x - if (flingVelocity.absoluteValue > 400.dp.toPx()) { - if (flingVelocity * pagerMultiplier < 0) { - pagerState.animateScrollToPage(pagerState.settledPage - 1) + if (!disablePager) { + if (flingVelocity.absoluteValue > 400.dp.toPx()) { + if (flingVelocity * pagerMultiplier < 0) { + pagerState.animateScrollToPage(pagerState.settledPage - 1) + } else { + pagerState.animateScrollToPage(pagerState.settledPage + 1) + } } else { - pagerState.animateScrollToPage(pagerState.settledPage + 1) + pagerState.animateScrollToPage(pagerState.settledPage) } - } else { - pagerState.animateScrollToPage(pagerState.settledPage) } nestedScrollDispatcher.dispatchPostFling(