summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/GoneScene.kt31
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() },
)
}
}