Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c5712a47 authored by Fabián Kozynski's avatar Fabián Kozynski
Browse files

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
parent d280057b
Loading
Loading
Loading
Loading
+20 −12
Original line number Diff line number Diff line
@@ -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,9 +295,10 @@ object QuickSettingsShade {
     * right.
     */
    @Composable
    fun Modifier.systemGestureExclusionInShade(): Modifier {
    fun Modifier.systemGestureExclusionInShade(enabled: () -> Boolean): Modifier {
        val density = LocalDensity.current
        return systemGestureExclusion { layoutCoordinates ->
        return thenIf(enabled()) {
            Modifier.systemGestureExclusion { layoutCoordinates ->
                val sidePadding = with(density) { Dimensions.Padding.toPx() }
                Rect(
                    offset = Offset(x = -sidePadding, y = 0f),
@@ -304,3 +311,4 @@ object QuickSettingsShade {
            }
        }
    }
}
+7 −1
Original line number Diff line number Diff line
@@ -716,7 +716,13 @@ constructor(
                                BrightnessSliderContainer(
                                    viewModel = containerViewModel.brightnessSliderViewModel,
                                    modifier =
                                        Modifier.systemGestureExclusionInShade().fillMaxWidth(),
                                        Modifier.systemGestureExclusionInShade(
                                                enabled = {
                                                    layoutState.transitionState is
                                                        TransitionState.Idle
                                                }
                                            )
                                            .fillMaxWidth(),
                                )
                            }
                        val TileGrid =