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

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

Merge "Fix two bugs with rotation in split select state" into tm-qpr-dev

parents 7c8ee4f8 7917ff31
Loading
Loading
Loading
Loading
+21 −15
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import static com.android.quickstep.views.RecentsView.TASK_PRIMARY_SPLIT_TRANSLA
import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_SPLIT_TRANSLATION;
import static com.android.quickstep.views.TaskView.FLAG_UPDATE_ALL;

import android.animation.AnimatorSet;
import android.annotation.TargetApi;
import android.os.Build;
import android.util.FloatProperty;
@@ -108,6 +109,13 @@ public final class RecentsViewStateController extends
     */
    private void handleSplitSelectionState(@NonNull LauncherState toState,
            @NonNull PendingAnimation builder, boolean animate) {
        if (toState != OVERVIEW_SPLIT_SELECT) {
            // Not going to split, nothing to do but ensure taskviews are at correct offset
            mRecentsView.resetSplitPrimaryScrollOffset();
            return;
        }

        // Create transition animations to split select
        PagedOrientationHandler orientationHandler =
                ((RecentsView) mLauncher.getOverviewPanel()).getPagedOrientationHandler();
        Pair<FloatProperty, FloatProperty> taskViewsFloat =
@@ -115,7 +123,6 @@ public final class RecentsViewStateController extends
                        TASK_PRIMARY_SPLIT_TRANSLATION, TASK_SECONDARY_SPLIT_TRANSLATION,
                        mLauncher.getDeviceProfile());

        if (toState == OVERVIEW_SPLIT_SELECT) {
        mRecentsView.createSplitSelectInitAnimation(builder,
                toState.getTransitionDuration(mLauncher, true /* isToState */));
        // Add properties to shift remaining taskViews to get out of placeholder view
@@ -124,13 +131,12 @@ public final class RecentsViewStateController extends
        builder.setFloat(mRecentsView, taskViewsFloat.second, 0, LINEAR);

        if (!animate) {
                builder.buildAnim().start();
            AnimatorSet as = builder.buildAnim();
            as.start();
            as.end();
        }

        mRecentsView.applySplitPrimaryScrollOffset();
        } else {
            mRecentsView.resetSplitPrimaryScrollOffset();
        }
    }

    private void setAlphas(PropertySetter propertySetter, StateAnimationConfig config,
+16 −11
Original line number Diff line number Diff line
@@ -2859,6 +2859,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
                mSplitSelectStateController.getActiveSplitStagePosition(), mTempRect);

        RectF startingTaskRect = new RectF();
        safeRemoveDragLayerView(mFirstFloatingTaskView);
        if (mSplitHiddenTaskView != null) {
            // Split staging is initiated
            mSplitHiddenTaskView.setThumbnailVisibility(INVISIBLE);
@@ -2882,6 +2883,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
        }

        // SplitInstructionsView: animate in
        safeRemoveDragLayerView(mSplitInstructionsView);
        mSplitInstructionsView = SplitInstructionsView.getSplitInstructionsView(mActivity);
        mSplitInstructionsView.setAlpha(0);
        anim.setViewAlpha(mSplitInstructionsView, 1, clampToProgress(LINEAR,
@@ -4237,6 +4239,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
                new RectF(firstTaskStartingBounds), firstTaskEndingBounds,
                false /* fadeWithThumbnail */, true /* isStagedTask */);

        safeRemoveDragLayerView(mSecondFloatingTaskView);
        mSecondFloatingTaskView = FloatingTaskView.getFloatingTaskView(mActivity,
                thumbnailView, thumbnailView.getThumbnail(),
                iconView.getDrawable(), secondTaskStartingBounds);
@@ -4269,17 +4272,13 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
    @SuppressLint("WrongCall")
    protected void resetFromSplitSelectionState() {
        if (mSplitSelectSource != null || mSplitHiddenTaskViewIndex != -1) {
            if (mSplitInstructionsView != null) {
                mActivity.getDragLayer().removeView(mSplitInstructionsView);
                mSplitInstructionsView = null;
            }
            if (mFirstFloatingTaskView != null) {
                mActivity.getDragLayer().removeView(mFirstFloatingTaskView);
            safeRemoveDragLayerView(mFirstFloatingTaskView);
            safeRemoveDragLayerView(mSecondFloatingTaskView);
            safeRemoveDragLayerView(mSplitInstructionsView);
            mFirstFloatingTaskView = null;
            }
            if (mSecondFloatingTaskView != null) {
                mActivity.getDragLayer().removeView(mSecondFloatingTaskView);
            mSecondFloatingTaskView = null;
            mSplitInstructionsView = null;
            if (mSecondSplitHiddenView != null) {
                mSecondSplitHiddenView.setVisibility(VISIBLE);
                mSecondSplitHiddenView = null;
            }
@@ -4307,6 +4306,12 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
        }
    }

    private void safeRemoveDragLayerView(@Nullable View viewToRemove) {
        if (viewToRemove != null) {
            mActivity.getDragLayer().removeView(viewToRemove);
        }
    }

    /**
     * Returns how much additional translation there should be for each of the child TaskViews.
     * Note that the translation can be its primary or secondary dimension.