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

Commit a49569a9 authored by Jeremy Sim's avatar Jeremy Sim Committed by Android (Google) Code Review
Browse files

Merge "Fix bug with rotating in the middle of split select staging animation" into tm-qpr-dev

parents e09fecc2 8477226a
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -53,4 +53,9 @@ public class SplitScreenSelectState extends OverviewState {
            return SplitAnimationTimings.ABORT_DURATION;
        }
    }

    @Override
    public boolean shouldPreserveDataStateOnReapply() {
        return true;
    }
}
+0 −1
Original line number Diff line number Diff line
@@ -4578,7 +4578,6 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
        return true;
    }

    /** TODO(b/181707736) More gracefully handle exiting split selection state */
    @SuppressLint("WrongCall")
    protected void resetFromSplitSelectionState() {
        if (mSplitSelectSource != null || mSplitHiddenTaskViewIndex != -1) {
+8 −0
Original line number Diff line number Diff line
@@ -70,4 +70,12 @@ public interface BaseState<T extends BaseState> {
    default boolean showTaskThumbnailSplash() {
        return false;
    }

    /**
     * For this state, whether member variables and other forms of data state should be preserved
     * or wiped when the state is reapplied. (See {@link StateManager#reapplyState()})
     */
    default boolean shouldPreserveDataStateOnReapply() {
        return false;
    }
}
+7 −0
Original line number Diff line number Diff line
@@ -184,6 +184,13 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>> {
    public void reapplyState(boolean cancelCurrentAnimation) {
        boolean wasInAnimation = mConfig.currentAnimation != null;
        if (cancelCurrentAnimation) {
            // Animation canceling can trigger a cleanup routine, causing problems when we are in a
            // launcher state that relies on member variable data. So if we are in one of those
            // states, accelerate the current animation to its end point rather than canceling it
            // outright.
            if (mState.shouldPreserveDataStateOnReapply() && mConfig.currentAnimation != null) {
                mConfig.currentAnimation.end();
            }
            mAtomicAnimationFactory.cancelAllStateElementAnimation();
            cancelAnimation();
        }