commit 4b0c7da0b66659c20c41c131542c3731adf0cac1
parent 9f99131633909126f070d2626a77c292940f51e2
Author: t-p-white <towhite@mozilla.com>
Date: Fri, 21 Nov 2025 18:00:33 +0000
Bug 2001355 - Part 1 Enable onboarding cards to be scrollable - except ToU. r=android-reviewers,mavduevskiy
Differential Revision: https://phabricator.services.mozilla.com/D273547
Diffstat:
1 file changed, 2 insertions(+), 29 deletions(-)
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/redesign/view/OnboardingScreenRedesign.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/redesign/view/OnboardingScreenRedesign.kt
@@ -34,12 +34,8 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
-import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
-import androidx.compose.ui.input.nestedscroll.NestedScrollSource
-import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
@@ -292,8 +288,6 @@ private fun OnboardingContent(
onMarketingDataLearnMoreClick: () -> Unit,
onMarketingDataContinueClick: (allowMarketingDataCollection: Boolean) -> Unit,
) {
- val nestedScrollConnection = remember { DisableForwardSwipeNestedScrollConnection(pagerState) }
-
BoxWithConstraints(modifier = Modifier.fillMaxSize()) {
val boxWithConstraintsScope = this
val isSmallPhoneScreen = boxWithConstraintsScope.maxHeight <= SMALL_SCREEN_MAX_HEIGHT
@@ -318,8 +312,8 @@ private fun OnboardingContent(
state = pagerState,
modifier = Modifier
.fillMaxWidth()
- .height(pagerHeight)
- .nestedScroll(nestedScrollConnection),
+ .height(pagerHeight),
+ userScrollEnabled = pagerState.currentPage != 0, // Disable scroll for the Terms of Use card.
contentPadding = PaddingValues(horizontal = paddingValue),
pageSize = PageSize.Fill,
beyondViewportPageCount = 2,
@@ -530,27 +524,6 @@ private fun isNonLargeScreenLandscape(isLargeScreen: Boolean, isLandscape: Boole
private fun pageSpacing(isLargeScreen: Boolean, isSmallScreen: Boolean, pagePeekWidth: Dp) =
if (isLargeScreen || isSmallScreen) pagePeekWidth else 8.dp
-private class DisableForwardSwipeNestedScrollConnection(
- private val pagerState: PagerState,
-) : NestedScrollConnection {
-
- override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset =
- if (available.x > 0) {
- // Allow going back on swipe
- Offset.Zero
- } else {
- // For forward swipe, only allow if the visible item offset is less than 0,
- // this would be a result of a slow back fling, and we should allow snapper to
- // snap to the appropriate item.
- // Else consume the whole offset and disable going forward.
- if (pagerState.currentPageOffsetFraction < 0) {
- Offset.Zero
- } else {
- Offset(available.x, 0f)
- }
- }
-}
-
// *** Code below used for previews only *** //
@FlexibleWindowLightDarkPreview