Loading packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerScene.kt +2 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.bouncer.ui.composable import androidx.compose.foundation.Canvas import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.overscroll import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect Loading Loading @@ -101,6 +102,7 @@ private fun SceneScope.BouncerScene( viewModel, dialogFactory, Modifier.element(Bouncer.Elements.Content) .overscroll(verticalOverscrollEffect) .sysuiResTag(Bouncer.TestTags.Root) .fillMaxSize(), ) Loading packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationScrimNestedScrollConnection.kt +0 −1 Original line number Diff line number Diff line Loading @@ -62,7 +62,6 @@ fun NotificationScrimNestedScrollConnection( canStartPostScroll = { offsetAvailable, _, _ -> offsetAvailable > 0 && (scrimOffset() < maxScrimOffset || isCurrentGestureOverscroll()) }, canStartPostFling = { false }, onStart = { firstScroll -> onStart(firstScroll) object : ScrollController { Loading packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationStackNestedScrollConnection.kt +25 −4 Original line number Diff line number Diff line Loading @@ -25,11 +25,13 @@ import androidx.compose.foundation.layout.offset import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier 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.LocalDensity import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.Velocity import androidx.compose.ui.unit.dp import androidx.compose.ui.util.fastCoerceAtLeast import com.android.compose.nestedscroll.OnStopScope Loading Loading @@ -80,9 +82,29 @@ fun Modifier.stackVerticalOverscroll( } return this.then( Modifier.nestedScroll(stackNestedScrollConnection).offset { IntOffset(x = 0, y = overscrollOffset.value.roundToInt()) Modifier.nestedScroll( remember { object : NestedScrollConnection { override suspend fun onPostFling( consumed: Velocity, available: Velocity, ): Velocity { return if (available.y < 0f && !canScrollForward()) { overscrollOffset.animateTo( targetValue = 0f, initialVelocity = available.y, animationSpec = tween(), ) available } else { Velocity.Zero } } } } ) .nestedScroll(stackNestedScrollConnection) .offset { IntOffset(x = 0, y = overscrollOffset.value.roundToInt()) } ) } Loading @@ -100,7 +122,6 @@ fun NotificationStackNestedScrollConnection( canStartPostScroll = { offsetAvailable, offsetBeforeStart, _ -> offsetAvailable < 0f && offsetBeforeStart < 0f && !canScrollForward() }, canStartPostFling = { velocityAvailable -> velocityAvailable < 0f && !canScrollForward() }, onStart = { firstScroll -> onStart(firstScroll) object : ScrollController { Loading packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt +2 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBars import androidx.compose.foundation.layout.windowInsetsBottomHeight import androidx.compose.foundation.overscroll import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll import androidx.compose.material3.MaterialTheme Loading Loading @@ -480,6 +481,7 @@ fun ContentScope.NotificationScrollingStack( modifier = modifier .element(Notifications.Elements.NotificationScrim) .overscroll(verticalOverscrollEffect) .offset { // if scrim is expanded while transitioning to Gone or QS scene, increase the // offset in step with the corresponding transition so that it is 0 when it Loading packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt +5 −22 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import com.android.systemui.scene.ui.composable.transitions.notificationsShadeTo import com.android.systemui.scene.ui.composable.transitions.shadeToQuickSettingsTransition import com.android.systemui.scene.ui.composable.transitions.toNotificationsShadeTransition import com.android.systemui.scene.ui.composable.transitions.toQuickSettingsShadeTransition import com.android.systemui.shade.ui.composable.OverlayShade import com.android.systemui.shade.ui.composable.Shade /** Loading Loading @@ -134,27 +133,11 @@ val SceneContainerTransitions = transitions { } // Scene overscroll // TODO(b/382477212) Remove STL Overscroll DSL overscrollDisabled(Scenes.Gone, Orientation.Vertical) overscrollDisabled(Scenes.Lockscreen, Orientation.Vertical) overscroll(Scenes.Bouncer, Orientation.Vertical) { translate(Bouncer.Elements.Content, y = { absoluteDistance }) } overscroll(Scenes.Shade, Orientation.Vertical) { translate( Notifications.Elements.NotificationScrim, y = Shade.Dimensions.ScrimOverscrollLimit, ) translate(Shade.Elements.SplitShadeStartColumn, y = Shade.Dimensions.ScrimOverscrollLimit) translate( Notifications.Elements.NotificationStackPlaceholder, y = Shade.Dimensions.ScrimOverscrollLimit, ) } overscroll(Overlays.NotificationsShade, Orientation.Vertical) { translate(OverlayShade.Elements.Panel, y = OverlayShade.Dimensions.OverscrollLimit) } overscroll(Overlays.QuickSettingsShade, Orientation.Vertical) { translate(OverlayShade.Elements.Panel, y = OverlayShade.Dimensions.OverscrollLimit) } overscrollDisabled(Scenes.Bouncer, Orientation.Vertical) overscrollDisabled(Scenes.Shade, Orientation.Vertical) overscrollDisabled(Overlays.NotificationsShade, Orientation.Vertical) overscrollDisabled(Overlays.QuickSettingsShade, Orientation.Vertical) } Loading
packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerScene.kt +2 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.bouncer.ui.composable import androidx.compose.foundation.Canvas import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.overscroll import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect Loading Loading @@ -101,6 +102,7 @@ private fun SceneScope.BouncerScene( viewModel, dialogFactory, Modifier.element(Bouncer.Elements.Content) .overscroll(verticalOverscrollEffect) .sysuiResTag(Bouncer.TestTags.Root) .fillMaxSize(), ) Loading
packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationScrimNestedScrollConnection.kt +0 −1 Original line number Diff line number Diff line Loading @@ -62,7 +62,6 @@ fun NotificationScrimNestedScrollConnection( canStartPostScroll = { offsetAvailable, _, _ -> offsetAvailable > 0 && (scrimOffset() < maxScrimOffset || isCurrentGestureOverscroll()) }, canStartPostFling = { false }, onStart = { firstScroll -> onStart(firstScroll) object : ScrollController { Loading
packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationStackNestedScrollConnection.kt +25 −4 Original line number Diff line number Diff line Loading @@ -25,11 +25,13 @@ import androidx.compose.foundation.layout.offset import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier 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.LocalDensity import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.Velocity import androidx.compose.ui.unit.dp import androidx.compose.ui.util.fastCoerceAtLeast import com.android.compose.nestedscroll.OnStopScope Loading Loading @@ -80,9 +82,29 @@ fun Modifier.stackVerticalOverscroll( } return this.then( Modifier.nestedScroll(stackNestedScrollConnection).offset { IntOffset(x = 0, y = overscrollOffset.value.roundToInt()) Modifier.nestedScroll( remember { object : NestedScrollConnection { override suspend fun onPostFling( consumed: Velocity, available: Velocity, ): Velocity { return if (available.y < 0f && !canScrollForward()) { overscrollOffset.animateTo( targetValue = 0f, initialVelocity = available.y, animationSpec = tween(), ) available } else { Velocity.Zero } } } } ) .nestedScroll(stackNestedScrollConnection) .offset { IntOffset(x = 0, y = overscrollOffset.value.roundToInt()) } ) } Loading @@ -100,7 +122,6 @@ fun NotificationStackNestedScrollConnection( canStartPostScroll = { offsetAvailable, offsetBeforeStart, _ -> offsetAvailable < 0f && offsetBeforeStart < 0f && !canScrollForward() }, canStartPostFling = { velocityAvailable -> velocityAvailable < 0f && !canScrollForward() }, onStart = { firstScroll -> onStart(firstScroll) object : ScrollController { Loading
packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt +2 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBars import androidx.compose.foundation.layout.windowInsetsBottomHeight import androidx.compose.foundation.overscroll import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll import androidx.compose.material3.MaterialTheme Loading Loading @@ -480,6 +481,7 @@ fun ContentScope.NotificationScrollingStack( modifier = modifier .element(Notifications.Elements.NotificationScrim) .overscroll(verticalOverscrollEffect) .offset { // if scrim is expanded while transitioning to Gone or QS scene, increase the // offset in step with the corresponding transition so that it is 0 when it Loading
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt +5 −22 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import com.android.systemui.scene.ui.composable.transitions.notificationsShadeTo import com.android.systemui.scene.ui.composable.transitions.shadeToQuickSettingsTransition import com.android.systemui.scene.ui.composable.transitions.toNotificationsShadeTransition import com.android.systemui.scene.ui.composable.transitions.toQuickSettingsShadeTransition import com.android.systemui.shade.ui.composable.OverlayShade import com.android.systemui.shade.ui.composable.Shade /** Loading Loading @@ -134,27 +133,11 @@ val SceneContainerTransitions = transitions { } // Scene overscroll // TODO(b/382477212) Remove STL Overscroll DSL overscrollDisabled(Scenes.Gone, Orientation.Vertical) overscrollDisabled(Scenes.Lockscreen, Orientation.Vertical) overscroll(Scenes.Bouncer, Orientation.Vertical) { translate(Bouncer.Elements.Content, y = { absoluteDistance }) } overscroll(Scenes.Shade, Orientation.Vertical) { translate( Notifications.Elements.NotificationScrim, y = Shade.Dimensions.ScrimOverscrollLimit, ) translate(Shade.Elements.SplitShadeStartColumn, y = Shade.Dimensions.ScrimOverscrollLimit) translate( Notifications.Elements.NotificationStackPlaceholder, y = Shade.Dimensions.ScrimOverscrollLimit, ) } overscroll(Overlays.NotificationsShade, Orientation.Vertical) { translate(OverlayShade.Elements.Panel, y = OverlayShade.Dimensions.OverscrollLimit) } overscroll(Overlays.QuickSettingsShade, Orientation.Vertical) { translate(OverlayShade.Elements.Panel, y = OverlayShade.Dimensions.OverscrollLimit) } overscrollDisabled(Scenes.Bouncer, Orientation.Vertical) overscrollDisabled(Scenes.Shade, Orientation.Vertical) overscrollDisabled(Overlays.NotificationsShade, Orientation.Vertical) overscrollDisabled(Overlays.QuickSettingsShade, Orientation.Vertical) }