Loading packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationScrimNestedScrollConnection.kt +6 −2 Original line number Diff line number Diff line Loading @@ -16,11 +16,13 @@ package com.android.systemui.notifications.ui.composable import androidx.compose.foundation.gestures.FlingBehavior import androidx.compose.foundation.gestures.Orientation import androidx.compose.ui.input.nestedscroll.NestedScrollConnection import androidx.compose.ui.input.nestedscroll.NestedScrollSource import androidx.compose.ui.util.fastCoerceAtLeast import androidx.compose.ui.util.fastCoerceAtMost import com.android.compose.nestedscroll.OnStopScope import com.android.compose.nestedscroll.PriorityNestedScrollConnection import com.android.compose.nestedscroll.ScrollController Loading @@ -43,6 +45,7 @@ fun NotificationScrimNestedScrollConnection( isCurrentGestureOverscroll: () -> Boolean, onStart: (Float) -> Unit = {}, onStop: (Float) -> Unit = {}, flingBehavior: FlingBehavior, ): PriorityNestedScrollConnection { return PriorityNestedScrollConnection( orientation = Orientation.Vertical, Loading Loading @@ -77,8 +80,9 @@ fun NotificationScrimNestedScrollConnection( return amountConsumed } override suspend fun onStop(initialVelocity: Float): Float { onStop(initialVelocity) override suspend fun OnStopScope.onStop(initialVelocity: Float): Float { val consumedByScroll = flingToScroll(initialVelocity, flingBehavior) onStop(initialVelocity - consumedByScroll) if (scrimOffset() < minScrimOffset()) { animateScrimOffset(minScrimOffset()) } Loading packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationStackNestedScrollConnection.kt +36 −28 Original line number Diff line number Diff line Loading @@ -18,7 +18,9 @@ package com.android.systemui.notifications.ui.composable import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.tween import androidx.compose.foundation.gestures.FlingBehavior import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.ScrollableDefaults import androidx.compose.foundation.layout.offset import androidx.compose.runtime.Composable import androidx.compose.runtime.remember Loading @@ -30,6 +32,7 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import androidx.compose.ui.util.fastCoerceAtLeast import com.android.compose.nestedscroll.OnStopScope import com.android.compose.nestedscroll.PriorityNestedScrollConnection import com.android.compose.nestedscroll.ScrollController import kotlin.math.max Loading @@ -46,7 +49,9 @@ fun Modifier.stackVerticalOverscroll( val screenHeight = with(LocalDensity.current) { LocalConfiguration.current.screenHeightDp.dp.toPx() } val overscrollOffset = remember { Animatable(0f) } val stackNestedScrollConnection = remember { val flingBehavior = ScrollableDefaults.flingBehavior() val stackNestedScrollConnection = remember(flingBehavior) { NotificationStackNestedScrollConnection( stackOffset = { overscrollOffset.value }, canScrollForward = canScrollForward, Loading @@ -70,6 +75,7 @@ fun Modifier.stackVerticalOverscroll( ) } }, flingBehavior = flingBehavior, ) } Loading @@ -86,6 +92,7 @@ fun NotificationStackNestedScrollConnection( onStart: (Float) -> Unit = {}, onScroll: (Float) -> Unit, onStop: (Float) -> Unit = {}, flingBehavior: FlingBehavior, ): PriorityNestedScrollConnection { return PriorityNestedScrollConnection( orientation = Orientation.Vertical, Loading @@ -106,8 +113,9 @@ fun NotificationStackNestedScrollConnection( return consumed } override suspend fun onStop(initialVelocity: Float): Float { onStop(initialVelocity) override suspend fun OnStopScope.onStop(initialVelocity: Float): Float { val consumedByScroll = flingToScroll(initialVelocity, flingBehavior) onStop(initialVelocity - consumedByScroll) return initialVelocity } Loading packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt +4 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import androidx.compose.foundation.ScrollState import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.ScrollableDefaults import androidx.compose.foundation.gestures.animateScrollBy import androidx.compose.foundation.gestures.rememberScrollableState import androidx.compose.foundation.gestures.scrollBy Loading Loading @@ -451,12 +452,14 @@ fun SceneScope.NotificationScrollingStack( } } val flingBehavior = ScrollableDefaults.flingBehavior() val scrimNestedScrollConnection = shadeSession.rememberSession( scrimOffset, maxScrimTop, minScrimTop, isCurrentGestureOverscroll, flingBehavior, ) { NotificationScrimNestedScrollConnection( scrimOffset = { scrimOffset.value }, Loading @@ -469,6 +472,7 @@ fun SceneScope.NotificationScrollingStack( contentHeight = { stackHeight.intValue.toFloat() }, minVisibleScrimHeight = minVisibleScrimHeight, isCurrentGestureOverscroll = { isCurrentGestureOverscroll.value }, flingBehavior = flingBehavior, ) } Loading packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt +2 −1 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import androidx.compose.ui.util.fastCoerceIn import com.android.compose.animation.scene.content.Content import com.android.compose.animation.scene.content.state.TransitionState import com.android.compose.animation.scene.content.state.TransitionState.HasOverscrollProperties.Companion.DistanceUnspecified import com.android.compose.nestedscroll.OnStopScope import com.android.compose.nestedscroll.PriorityNestedScrollConnection import com.android.compose.nestedscroll.ScrollController import kotlin.math.absoluteValue Loading Loading @@ -749,7 +750,7 @@ private fun scrollController( return dragController.onDrag(delta = deltaScroll) } override suspend fun onStop(initialVelocity: Float): Float { override suspend fun OnStopScope.onStop(initialVelocity: Float): Float { return dragController .onStop(velocity = initialVelocity, canChangeContent = canChangeScene) .invoke() Loading packages/SystemUI/compose/scene/src/com/android/compose/nestedscroll/LargeTopAppBarNestedScrollConnection.kt +14 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.compose.nestedscroll import androidx.compose.foundation.gestures.FlingBehavior import androidx.compose.foundation.gestures.Orientation import androidx.compose.ui.input.nestedscroll.NestedScrollConnection import androidx.compose.ui.input.nestedscroll.NestedScrollSource Loading @@ -41,6 +42,7 @@ fun LargeTopAppBarNestedScrollConnection( onHeightChanged: (Float) -> Unit, minHeight: () -> Float, maxHeight: () -> Float, flingBehavior: FlingBehavior, ): PriorityNestedScrollConnection { return PriorityNestedScrollConnection( orientation = Orientation.Vertical, Loading @@ -55,7 +57,15 @@ fun LargeTopAppBarNestedScrollConnection( offsetAvailable > 0 && height() < maxHeight() }, canStartPostFling = { false }, onStart = { LargeTopAppBarScrollController(height, maxHeight, minHeight, onHeightChanged) }, onStart = { LargeTopAppBarScrollController( height = height, maxHeight = maxHeight, minHeight = minHeight, onHeightChanged = onHeightChanged, flingBehavior = flingBehavior, ) }, ) } Loading @@ -64,6 +74,7 @@ private class LargeTopAppBarScrollController( val maxHeight: () -> Float, val minHeight: () -> Float, val onHeightChanged: (Float) -> Unit, val flingBehavior: FlingBehavior, ) : ScrollController { override fun onScroll(deltaScroll: Float, source: NestedScrollSource): Float { val currentHeight = height() Loading @@ -79,9 +90,8 @@ private class LargeTopAppBarScrollController( return amountConsumed } override suspend fun onStop(initialVelocity: Float): Float { // Don't consume the velocity on pre/post fling return 0f override suspend fun OnStopScope.onStop(initialVelocity: Float): Float { return flingToScroll(initialVelocity, flingBehavior) } override fun onCancel() { Loading Loading
packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationScrimNestedScrollConnection.kt +6 −2 Original line number Diff line number Diff line Loading @@ -16,11 +16,13 @@ package com.android.systemui.notifications.ui.composable import androidx.compose.foundation.gestures.FlingBehavior import androidx.compose.foundation.gestures.Orientation import androidx.compose.ui.input.nestedscroll.NestedScrollConnection import androidx.compose.ui.input.nestedscroll.NestedScrollSource import androidx.compose.ui.util.fastCoerceAtLeast import androidx.compose.ui.util.fastCoerceAtMost import com.android.compose.nestedscroll.OnStopScope import com.android.compose.nestedscroll.PriorityNestedScrollConnection import com.android.compose.nestedscroll.ScrollController Loading @@ -43,6 +45,7 @@ fun NotificationScrimNestedScrollConnection( isCurrentGestureOverscroll: () -> Boolean, onStart: (Float) -> Unit = {}, onStop: (Float) -> Unit = {}, flingBehavior: FlingBehavior, ): PriorityNestedScrollConnection { return PriorityNestedScrollConnection( orientation = Orientation.Vertical, Loading Loading @@ -77,8 +80,9 @@ fun NotificationScrimNestedScrollConnection( return amountConsumed } override suspend fun onStop(initialVelocity: Float): Float { onStop(initialVelocity) override suspend fun OnStopScope.onStop(initialVelocity: Float): Float { val consumedByScroll = flingToScroll(initialVelocity, flingBehavior) onStop(initialVelocity - consumedByScroll) if (scrimOffset() < minScrimOffset()) { animateScrimOffset(minScrimOffset()) } Loading
packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationStackNestedScrollConnection.kt +36 −28 Original line number Diff line number Diff line Loading @@ -18,7 +18,9 @@ package com.android.systemui.notifications.ui.composable import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.tween import androidx.compose.foundation.gestures.FlingBehavior import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.ScrollableDefaults import androidx.compose.foundation.layout.offset import androidx.compose.runtime.Composable import androidx.compose.runtime.remember Loading @@ -30,6 +32,7 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import androidx.compose.ui.util.fastCoerceAtLeast import com.android.compose.nestedscroll.OnStopScope import com.android.compose.nestedscroll.PriorityNestedScrollConnection import com.android.compose.nestedscroll.ScrollController import kotlin.math.max Loading @@ -46,7 +49,9 @@ fun Modifier.stackVerticalOverscroll( val screenHeight = with(LocalDensity.current) { LocalConfiguration.current.screenHeightDp.dp.toPx() } val overscrollOffset = remember { Animatable(0f) } val stackNestedScrollConnection = remember { val flingBehavior = ScrollableDefaults.flingBehavior() val stackNestedScrollConnection = remember(flingBehavior) { NotificationStackNestedScrollConnection( stackOffset = { overscrollOffset.value }, canScrollForward = canScrollForward, Loading @@ -70,6 +75,7 @@ fun Modifier.stackVerticalOverscroll( ) } }, flingBehavior = flingBehavior, ) } Loading @@ -86,6 +92,7 @@ fun NotificationStackNestedScrollConnection( onStart: (Float) -> Unit = {}, onScroll: (Float) -> Unit, onStop: (Float) -> Unit = {}, flingBehavior: FlingBehavior, ): PriorityNestedScrollConnection { return PriorityNestedScrollConnection( orientation = Orientation.Vertical, Loading @@ -106,8 +113,9 @@ fun NotificationStackNestedScrollConnection( return consumed } override suspend fun onStop(initialVelocity: Float): Float { onStop(initialVelocity) override suspend fun OnStopScope.onStop(initialVelocity: Float): Float { val consumedByScroll = flingToScroll(initialVelocity, flingBehavior) onStop(initialVelocity - consumedByScroll) return initialVelocity } Loading
packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt +4 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import androidx.compose.foundation.ScrollState import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.ScrollableDefaults import androidx.compose.foundation.gestures.animateScrollBy import androidx.compose.foundation.gestures.rememberScrollableState import androidx.compose.foundation.gestures.scrollBy Loading Loading @@ -451,12 +452,14 @@ fun SceneScope.NotificationScrollingStack( } } val flingBehavior = ScrollableDefaults.flingBehavior() val scrimNestedScrollConnection = shadeSession.rememberSession( scrimOffset, maxScrimTop, minScrimTop, isCurrentGestureOverscroll, flingBehavior, ) { NotificationScrimNestedScrollConnection( scrimOffset = { scrimOffset.value }, Loading @@ -469,6 +472,7 @@ fun SceneScope.NotificationScrollingStack( contentHeight = { stackHeight.intValue.toFloat() }, minVisibleScrimHeight = minVisibleScrimHeight, isCurrentGestureOverscroll = { isCurrentGestureOverscroll.value }, flingBehavior = flingBehavior, ) } Loading
packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt +2 −1 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import androidx.compose.ui.util.fastCoerceIn import com.android.compose.animation.scene.content.Content import com.android.compose.animation.scene.content.state.TransitionState import com.android.compose.animation.scene.content.state.TransitionState.HasOverscrollProperties.Companion.DistanceUnspecified import com.android.compose.nestedscroll.OnStopScope import com.android.compose.nestedscroll.PriorityNestedScrollConnection import com.android.compose.nestedscroll.ScrollController import kotlin.math.absoluteValue Loading Loading @@ -749,7 +750,7 @@ private fun scrollController( return dragController.onDrag(delta = deltaScroll) } override suspend fun onStop(initialVelocity: Float): Float { override suspend fun OnStopScope.onStop(initialVelocity: Float): Float { return dragController .onStop(velocity = initialVelocity, canChangeContent = canChangeScene) .invoke() Loading
packages/SystemUI/compose/scene/src/com/android/compose/nestedscroll/LargeTopAppBarNestedScrollConnection.kt +14 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.compose.nestedscroll import androidx.compose.foundation.gestures.FlingBehavior import androidx.compose.foundation.gestures.Orientation import androidx.compose.ui.input.nestedscroll.NestedScrollConnection import androidx.compose.ui.input.nestedscroll.NestedScrollSource Loading @@ -41,6 +42,7 @@ fun LargeTopAppBarNestedScrollConnection( onHeightChanged: (Float) -> Unit, minHeight: () -> Float, maxHeight: () -> Float, flingBehavior: FlingBehavior, ): PriorityNestedScrollConnection { return PriorityNestedScrollConnection( orientation = Orientation.Vertical, Loading @@ -55,7 +57,15 @@ fun LargeTopAppBarNestedScrollConnection( offsetAvailable > 0 && height() < maxHeight() }, canStartPostFling = { false }, onStart = { LargeTopAppBarScrollController(height, maxHeight, minHeight, onHeightChanged) }, onStart = { LargeTopAppBarScrollController( height = height, maxHeight = maxHeight, minHeight = minHeight, onHeightChanged = onHeightChanged, flingBehavior = flingBehavior, ) }, ) } Loading @@ -64,6 +74,7 @@ private class LargeTopAppBarScrollController( val maxHeight: () -> Float, val minHeight: () -> Float, val onHeightChanged: (Float) -> Unit, val flingBehavior: FlingBehavior, ) : ScrollController { override fun onScroll(deltaScroll: Float, source: NestedScrollSource): Float { val currentHeight = height() Loading @@ -79,9 +90,8 @@ private class LargeTopAppBarScrollController( return amountConsumed } override suspend fun onStop(initialVelocity: Float): Float { // Don't consume the velocity on pre/post fling return 0f override suspend fun OnStopScope.onStop(initialVelocity: Float): Float { return flingToScroll(initialVelocity, flingBehavior) } override fun onCancel() { Loading