diff options
| -rw-r--r-- | packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/GoneScene.kt | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/GoneScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/GoneScene.kt index ae5dd8abb82e..5fb9416cf35b 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/GoneScene.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/GoneScene.kt @@ -19,12 +19,17 @@ package com.android.systemui.scene.ui.composable import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import com.android.compose.animation.scene.SceneScope import com.android.compose.animation.scene.UserAction import com.android.compose.animation.scene.UserActionResult import com.android.compose.animation.scene.animateContentDpAsState import com.android.compose.animation.scene.animateContentFloatAsState +import com.android.compose.animation.scene.content.state.TransitionState import com.android.systemui.dagger.SysUISingleton import com.android.systemui.lifecycle.ExclusiveActivatable import com.android.systemui.lifecycle.rememberViewModel @@ -63,9 +68,25 @@ constructor( } @Composable - override fun SceneScope.Content( - modifier: Modifier, - ) { + override fun SceneScope.Content(modifier: Modifier) { + + val isIdle by remember { + derivedStateOf { layoutState.transitionState is TransitionState.Idle } + } + + LaunchedEffect(isIdle) { + // Wait for being Idle on this Scene, otherwise LaunchedEffect would fire too soon, + // and another transition could override the NSSL stack bounds. + if (isIdle) { + // Reset the stack bounds to avoid caching these values from the previous Scenes, + // and not to confuse the StackScrollAlgorithm when it displays a HUN over GONE. + notificationStackScrolLView.get().apply { + setStackTop(0f) + setStackCutoff(0f) + } + } + } + animateContentFloatAsState( value = QuickSettings.SharedValues.SquishinessValues.GoneSceneStarting, key = QuickSettings.SharedValues.TilesSquishiness, @@ -75,9 +96,7 @@ constructor( SnoozeableHeadsUpNotificationSpace( stackScrollView = notificationStackScrolLView.get(), viewModel = - rememberViewModel("GoneScene") { - notificationsPlaceholderViewModelFactory.create() - }, + rememberViewModel("GoneScene") { notificationsPlaceholderViewModelFactory.create() }, ) } } |