diff options
| author | 2025-03-03 14:39:57 -0500 | |
|---|---|---|
| committer | 2025-03-03 14:43:01 -0500 | |
| commit | c5712a47b430c7dd58fb0b0803313a929d46b04d (patch) | |
| tree | 3812f285bd25438c2478f1ee7502d28555ab8314 | |
| parent | d280057b695acbe35bc76cde4fa9b5aebaaf01df (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
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 = |