parent
daa78ff8a7
commit
bbdafdf12b
@ -324,7 +324,7 @@ fun PagerScaffold(
|
|||||||
available: Offset,
|
available: Offset,
|
||||||
source: NestedScrollSource
|
source: NestedScrollSource
|
||||||
): Offset {
|
): Offset {
|
||||||
if (source == NestedScrollSource.Drag && !isWidgetEditMode && available != Offset.Zero) {
|
if (source == NestedScrollSource.UserInput && !isWidgetEditMode && available != Offset.Zero) {
|
||||||
gestureManager.dispatchDrag(available)
|
gestureManager.dispatchDrag(available)
|
||||||
}
|
}
|
||||||
val deltaSearchBarOffset =
|
val deltaSearchBarOffset =
|
||||||
@ -365,7 +365,7 @@ fun PagerScaffold(
|
|||||||
val searchNestedScrollConnection = remember {
|
val searchNestedScrollConnection = remember {
|
||||||
object : NestedScrollConnection {
|
object : NestedScrollConnection {
|
||||||
override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset {
|
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)
|
viewModel.setSearchbarFocus(false)
|
||||||
searchVM.bestMatch.value = null
|
searchVM.bestMatch.value = null
|
||||||
}
|
}
|
||||||
@ -689,19 +689,20 @@ fun Modifier.pagerScaffoldScrollHandler(
|
|||||||
scope.launch {
|
scope.launch {
|
||||||
val preConsumed = nestedScrollDispatcher.dispatchPreScroll(
|
val preConsumed = nestedScrollDispatcher.dispatchPreScroll(
|
||||||
dragAmount,
|
dragAmount,
|
||||||
NestedScrollSource.Drag
|
NestedScrollSource.UserInput
|
||||||
)
|
)
|
||||||
val available = dragAmount - preConsumed
|
val available = dragAmount - preConsumed
|
||||||
val consumedY =
|
val consumedY =
|
||||||
scrollableState.scrollBy(available.y * scrollMultiplier) * scrollMultiplier
|
scrollableState.scrollBy(available.y * scrollMultiplier) * scrollMultiplier
|
||||||
val consumedX =
|
val consumedX =
|
||||||
pagerState.scrollBy(available.x * pagerMultiplier) * pagerMultiplier
|
if (disablePager) 0f
|
||||||
|
else pagerState.scrollBy(available.x * pagerMultiplier) * pagerMultiplier
|
||||||
val totalConsumed =
|
val totalConsumed =
|
||||||
Offset(preConsumed.x + consumedX, preConsumed.y + consumedY)
|
Offset(preConsumed.x + consumedX, preConsumed.y + consumedY)
|
||||||
nestedScrollDispatcher.dispatchPostScroll(
|
nestedScrollDispatcher.dispatchPostScroll(
|
||||||
totalConsumed,
|
totalConsumed,
|
||||||
dragAmount - totalConsumed,
|
dragAmount - totalConsumed,
|
||||||
NestedScrollSource.Drag
|
NestedScrollSource.UserInput
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -713,14 +714,16 @@ fun Modifier.pagerScaffoldScrollHandler(
|
|||||||
val preConsumed = nestedScrollDispatcher.dispatchPreFling(velocity)
|
val preConsumed = nestedScrollDispatcher.dispatchPreFling(velocity)
|
||||||
val flingVelocity = (velocity - preConsumed).x
|
val flingVelocity = (velocity - preConsumed).x
|
||||||
|
|
||||||
if (flingVelocity.absoluteValue > 400.dp.toPx()) {
|
if (!disablePager) {
|
||||||
if (flingVelocity * pagerMultiplier < 0) {
|
if (flingVelocity.absoluteValue > 400.dp.toPx()) {
|
||||||
pagerState.animateScrollToPage(pagerState.settledPage - 1)
|
if (flingVelocity * pagerMultiplier < 0) {
|
||||||
|
pagerState.animateScrollToPage(pagerState.settledPage - 1)
|
||||||
|
} else {
|
||||||
|
pagerState.animateScrollToPage(pagerState.settledPage + 1)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
pagerState.animateScrollToPage(pagerState.settledPage + 1)
|
pagerState.animateScrollToPage(pagerState.settledPage)
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
pagerState.animateScrollToPage(pagerState.settledPage)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nestedScrollDispatcher.dispatchPostFling(
|
nestedScrollDispatcher.dispatchPostFling(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user