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

Commit 9d708f7e authored by Andreas Miko's avatar Andreas Miko Committed by Android (Google) Code Review
Browse files

Merge changes I5810a891,Ic4527a0e into main

* changes:
  Remove fromScene == toScene special handling
  Fix SceneGestureHandler edge cases
parents cf6263d1 13268407
Loading
Loading
Loading
Loading
+1 −5
Original line number Original line Diff line number Diff line
@@ -175,11 +175,7 @@ private fun <T> computeValue(
    canOverflow: Boolean,
    canOverflow: Boolean,
): T {
): T {
    val state = layoutImpl.state.transitionState
    val state = layoutImpl.state.transitionState
    if (
    if (state !is TransitionState.Transition || !layoutImpl.isTransitionReady(state)) {
        state !is TransitionState.Transition ||
            state.fromScene == state.toScene ||
            !layoutImpl.isTransitionReady(state)
    ) {
        return sharedValue.value
        return sharedValue.value
    }
    }


+3 −9
Original line number Original line Diff line number Diff line
@@ -47,12 +47,6 @@ internal fun CoroutineScope.animateToScene(
    when (state) {
    when (state) {
        is TransitionState.Idle -> animate(layoutImpl, target)
        is TransitionState.Idle -> animate(layoutImpl, target)
        is TransitionState.Transition -> {
        is TransitionState.Transition -> {
            if (state.toScene == state.fromScene) {
                // Same as idle.
                animate(layoutImpl, target)
                return
            }

            // A transition is currently running: first check whether `transition.toScene` or
            // A transition is currently running: first check whether `transition.toScene` or
            // `transition.fromScene` is the same as our target scene, in which case the transition
            // `transition.fromScene` is the same as our target scene, in which case the transition
            // can be accelerated or reversed to end up in the target state.
            // can be accelerated or reversed to end up in the target state.
@@ -153,13 +147,13 @@ private fun CoroutineScope.animate(
}
}


private class OneOffTransition(
private class OneOffTransition(
    override val fromScene: SceneKey,
    fromScene: SceneKey,
    override val toScene: SceneKey,
    toScene: SceneKey,
    override val currentScene: SceneKey,
    override val currentScene: SceneKey,
    override val isInitiatedByUserInput: Boolean,
    override val isInitiatedByUserInput: Boolean,
    override val isUserInputOngoing: Boolean,
    override val isUserInputOngoing: Boolean,
    private val animatable: Animatable<Float, AnimationVector1D>,
    private val animatable: Animatable<Float, AnimationVector1D>,
) : TransitionState.Transition {
) : TransitionState.Transition(fromScene, toScene) {
    override val progress: Float
    override val progress: Float
        get() = animatable.value
        get() = animatable.value
}
}
+2 −3
Original line number Original line Diff line number Diff line
@@ -288,7 +288,6 @@ private fun shouldDrawElement(
    // Always draw the element if there is no ongoing transition or if the element is not shared.
    // Always draw the element if there is no ongoing transition or if the element is not shared.
    if (
    if (
        state !is TransitionState.Transition ||
        state !is TransitionState.Transition ||
            state.fromScene == state.toScene ||
            !layoutImpl.isTransitionReady(state) ||
            !layoutImpl.isTransitionReady(state) ||
            state.fromScene !in element.sceneValues ||
            state.fromScene !in element.sceneValues ||
            state.toScene !in element.sceneValues
            state.toScene !in element.sceneValues
@@ -374,7 +373,7 @@ private fun isElementOpaque(
): Boolean {
): Boolean {
    val state = layoutImpl.state.transitionState
    val state = layoutImpl.state.transitionState


    if (state !is TransitionState.Transition || state.fromScene == state.toScene) {
    if (state !is TransitionState.Transition) {
        return true
        return true
    }
    }


@@ -611,7 +610,7 @@ private inline fun <T> computeValue(
    val state = layoutImpl.state.transitionState
    val state = layoutImpl.state.transitionState


    // There is no ongoing transition.
    // There is no ongoing transition.
    if (state !is TransitionState.Transition || state.fromScene == state.toScene) {
    if (state !is TransitionState.Transition) {
        // Even if this element SceneTransitionLayout is not animated, the layout itself might be
        // Even if this element SceneTransitionLayout is not animated, the layout itself might be
        // animated (e.g. by another parent SceneTransitionLayout), in which case this element still
        // animated (e.g. by another parent SceneTransitionLayout), in which case this element still
        // need to participate in the layout phase.
        // need to participate in the layout phase.
+0 −4
Original line number Original line Diff line number Diff line
@@ -131,10 +131,6 @@ private fun shouldComposeMovableElement(


    val fromScene = (transitionState as TransitionState.Transition).fromScene
    val fromScene = (transitionState as TransitionState.Transition).fromScene
    val toScene = transitionState.toScene
    val toScene = transitionState.toScene
    if (fromScene == toScene) {
        check(fromScene == scene)
        return true
    }


    val fromReady = layoutImpl.isSceneReady(fromScene)
    val fromReady = layoutImpl.isSceneReady(fromScene)
    val toReady = layoutImpl.isSceneReady(toScene)
    val toReady = layoutImpl.isSceneReady(toScene)
+7 −11
Original line number Original line Diff line number Diff line
@@ -73,9 +73,6 @@ fun SceneTransitionLayoutState.observableTransitionState(): Flow<ObservableTrans
            when (val state = transitionState) {
            when (val state = transitionState) {
                is TransitionState.Idle -> ObservableTransitionState.Idle(state.currentScene)
                is TransitionState.Idle -> ObservableTransitionState.Idle(state.currentScene)
                is TransitionState.Transition -> {
                is TransitionState.Transition -> {
                    if (state.fromScene == state.toScene) {
                        ObservableTransitionState.Idle(state.currentScene)
                    } else {
                    ObservableTransitionState.Transition(
                    ObservableTransitionState.Transition(
                        fromScene = state.fromScene,
                        fromScene = state.fromScene,
                        toScene = state.toScene,
                        toScene = state.toScene,
@@ -86,6 +83,5 @@ fun SceneTransitionLayoutState.observableTransitionState(): Flow<ObservableTrans
                }
                }
            }
            }
        }
        }
        }
        .distinctUntilChanged()
        .distinctUntilChanged()
}
}
Loading