summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Fabián Kozynski <kozynski@google.com> 2025-03-03 14:39:57 -0500
committer Fabián Kozynski <kozynski@google.com> 2025-03-03 14:43:01 -0500
commitc5712a47b430c7dd58fb0b0803313a929d46b04d (patch)
tree3812f285bd25438c2478f1ee7502d28555ab8314
parentd280057b695acbe35bc76cde4fa9b5aebaaf01df (diff)
Apply gesture exclusion only when not transitionin
When we are transitioning, the layout position of the slider (or any component) will move, and there's no need to apply gesture exclusion at those points. Instead only apply when transition state is idle. Test: manual, perfetto slices MSG_SYSTEM_GESTURE_EXCLUSION_CHANGED Flag: com.android.systemui.qs_ui_refactor_compose_fragment Fixes: 399979268 Change-Id: Ifd0dd9ed17040172fed63d27271967757d8c3c4d
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeOverlay.kt32
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt8
2 files changed, 27 insertions, 13 deletions
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeOverlay.kt b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeOverlay.kt
index 547461e5faf2..a0216268308c 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeOverlay.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeOverlay.kt
@@ -49,6 +49,8 @@ import com.android.compose.animation.scene.ContentScope
import com.android.compose.animation.scene.ElementKey
import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
+import com.android.compose.animation.scene.content.state.TransitionState
+import com.android.compose.modifiers.thenIf
import com.android.systemui.brightness.ui.compose.BrightnessSliderContainer
import com.android.systemui.compose.modifiers.sysuiResTag
import com.android.systemui.dagger.SysUISingleton
@@ -258,7 +260,11 @@ fun ContentScope.QuickSettingsLayout(
BrightnessSliderContainer(
viewModel = viewModel.brightnessSliderViewModel,
containerColor = OverlayShade.Colors.PanelBackground,
- modifier = Modifier.systemGestureExclusionInShade().fillMaxWidth(),
+ modifier =
+ Modifier.systemGestureExclusionInShade(
+ enabled = { layoutState.transitionState is TransitionState.Idle }
+ )
+ .fillMaxWidth(),
)
Box {
@@ -289,18 +295,20 @@ object QuickSettingsShade {
* right.
*/
@Composable
- fun Modifier.systemGestureExclusionInShade(): Modifier {
+ fun Modifier.systemGestureExclusionInShade(enabled: () -> Boolean): Modifier {
val density = LocalDensity.current
- return systemGestureExclusion { layoutCoordinates ->
- val sidePadding = with(density) { Dimensions.Padding.toPx() }
- Rect(
- offset = Offset(x = -sidePadding, y = 0f),
- size =
- Size(
- width = layoutCoordinates.size.width.toFloat() + 2 * sidePadding,
- height = layoutCoordinates.size.height.toFloat(),
- ),
- )
+ return thenIf(enabled()) {
+ Modifier.systemGestureExclusion { layoutCoordinates ->
+ val sidePadding = with(density) { Dimensions.Padding.toPx() }
+ Rect(
+ offset = Offset(x = -sidePadding, y = 0f),
+ size =
+ Size(
+ width = layoutCoordinates.size.width.toFloat() + 2 * sidePadding,
+ height = layoutCoordinates.size.height.toFloat(),
+ ),
+ )
+ }
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt b/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt
index 5e7e0c97a147..8d69f7cf17d0 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt
@@ -716,7 +716,13 @@ constructor(
BrightnessSliderContainer(
viewModel = containerViewModel.brightnessSliderViewModel,
modifier =
- Modifier.systemGestureExclusionInShade().fillMaxWidth(),
+ Modifier.systemGestureExclusionInShade(
+ enabled = {
+ layoutState.transitionState is
+ TransitionState.Idle
+ }
+ )
+ .fillMaxWidth(),
)
}
val TileGrid =