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

Commit 06fbb5ec authored by Tony Wickham's avatar Tony Wickham Committed by Android (Google) Code Review
Browse files

Merge "Don't draw task insets or corners in multi window mode" into ub-launcher3-qt-dev

parents 4ec8209c 54acd8a2
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -31,11 +31,12 @@ import android.graphics.RectF;
import android.os.Build;
import android.os.RemoteException;

import androidx.annotation.Nullable;

import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.util.Themes;
import com.android.launcher3.views.BaseDragLayer;
import com.android.quickstep.RecentsModel;
import com.android.quickstep.views.RecentsView;
@@ -50,8 +51,6 @@ import com.android.systemui.shared.system.WindowManagerWrapper;

import java.util.function.BiFunction;

import androidx.annotation.Nullable;

/**
 * Utility class to handle window clip animation
 */
@@ -327,12 +326,14 @@ public class ClipAnimationHelper {

        float scale = mTargetRect.width() / mSourceRect.width();
        float insetProgress = (1 - progress);
        float windowCornerRadius = mUseRoundedCornersOnWindows
                ? mWindowCornerRadius : 0;
        ttv.drawOnCanvas(canvas,
                -mSourceWindowClipInsets.left * insetProgress,
                -mSourceWindowClipInsets.top * insetProgress,
                ttv.getMeasuredWidth() + mSourceWindowClipInsets.right * insetProgress,
                ttv.getMeasuredHeight() + mSourceWindowClipInsets.bottom * insetProgress,
                Utilities.mapRange(progress, mWindowCornerRadius * scale, ttv.getCornerRadius()));
                Utilities.mapRange(progress, windowCornerRadius * scale, ttv.getCornerRadius()));
    }

    public RectF getTargetRect() {
+3 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.graphics.drawable.Drawable;
import android.util.FloatProperty;
import android.view.View;

import com.android.launcher3.BaseActivity;
import com.android.launcher3.Utilities;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.TaskThumbnailView;
@@ -75,6 +76,8 @@ public class TaskViewDrawable extends Drawable {
        mThumbnailView = tv.getThumbnail();
        mClipAnimationHelper = new ClipAnimationHelper(parent.getContext());
        mClipAnimationHelper.fromTaskThumbnailView(mThumbnailView, parent);
        mClipAnimationHelper.prepareAnimation(
                BaseActivity.fromContext(tv.getContext()).getDeviceProfile(), true /* isOpening */);
    }

    public void setProgress(float progress) {
+3 −3
Original line number Diff line number Diff line
@@ -210,9 +210,9 @@ public class TaskThumbnailView extends View {
                mCurrentDrawnCornerRadius);
    }

    public Rect getInsetsToDrawInFullscreen() {
        // Don't show insets in the wrong orientation.
        return mIsRotated ? EMPTY_RECT : mScaledInsets;
    public Rect getInsetsToDrawInFullscreen(boolean isMultiWindowMode) {
        // Don't show insets in the wrong orientation or in multi window mode.
        return mIsRotated || isMultiWindowMode ? EMPTY_RECT : mScaledInsets;
    }

    public void setCurrentDrawnInsetsAndRadius(Rect insets, float radius) {
+14 −13
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
package com.android.quickstep.views;

import static android.widget.Toast.LENGTH_SHORT;
import static com.android.launcher3.BaseActivity.fromContext;

import static com.android.launcher3.QuickstepAppTransitionManagerImpl.RECENTS_LAUNCH_DURATION;
import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
import static com.android.launcher3.anim.Interpolators.LINEAR;
@@ -167,8 +167,9 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
    private float mZoomScale;
    private float mFullscreenProgress;
    private final Rect mCurrentDrawnInsets = new Rect();
    private float mCornerRadius;
    private float mWindowCornerRadius;
    private final float mCornerRadius;
    private final float mWindowCornerRadius;
    private final BaseDraggingActivity mActivity;

    private ObjectAnimator mIconAndDimAnimator;
    private float mIconScaleAnimStartProgress = 0;
@@ -190,6 +191,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {

    public TaskView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        mActivity = BaseDraggingActivity.fromContext(context);
        setOnClickListener((view) -> {
            if (getTask() == null) {
                return;
@@ -204,10 +206,10 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
                launchTask(true /* animate */);
            }

            fromContext(context).getUserEventDispatcher().logTaskLaunchOrDismiss(
            mActivity.getUserEventDispatcher().logTaskLaunchOrDismiss(
                    Touch.TAP, Direction.NONE, getRecentsView().indexOfChild(this),
                    TaskUtils.getLaunchComponentKeyForTask(getTask().key));
            fromContext(context).getStatsLogManager().logTaskLaunch(getRecentsView(),
            mActivity.getStatsLogManager().logTaskLaunch(getRecentsView(),
                    TaskUtils.getLaunchComponentKeyForTask(getTask().key));
        });
        mCornerRadius = TaskCornerRadius.get(context);
@@ -306,8 +308,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
        if (mTask != null) {
            final ActivityOptions opts;
            if (animate) {
                opts = ((BaseDraggingActivity) fromContext(getContext()))
                        .getActivityLaunchOptions(this);
                opts = mActivity.getActivityLaunchOptions(this);
                if (freezeTaskList) {
                    ActivityOptionsCompat.setFreezeRecentTasksList(opts);
                }
@@ -571,13 +572,12 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
                        getContext().getText(R.string.accessibility_close_task)));

        final Context context = getContext();
        final BaseDraggingActivity activity = fromContext(context);
        final List<TaskSystemShortcut> shortcuts =
                mSnapshotView.getTaskOverlay().getEnabledShortcuts(this);
        final int count = shortcuts.size();
        for (int i = 0; i < count; ++i) {
            final TaskSystemShortcut menuOption = shortcuts.get(i);
            OnClickListener onClickListener = menuOption.getOnClickListener(activity, this);
            OnClickListener onClickListener = menuOption.getOnClickListener(mActivity, this);
            if (onClickListener != null) {
                info.addAction(menuOption.createAccessibilityAction(context));
            }
@@ -617,8 +617,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
        for (int i = 0; i < count; ++i) {
            final TaskSystemShortcut menuOption = shortcuts.get(i);
            if (menuOption.hasHandlerForAction(action)) {
                OnClickListener onClickListener = menuOption.getOnClickListener(
                        fromContext(getContext()), this);
                OnClickListener onClickListener = menuOption.getOnClickListener(mActivity, this);
                if (onClickListener != null) {
                    onClickListener.onClick(this);
                }
@@ -658,13 +657,15 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
        setClipToPadding(!isFullscreen);

        TaskThumbnailView thumbnail = getThumbnail();
        Rect insets = thumbnail.getInsetsToDrawInFullscreen();
        boolean isMultiWindowMode = mActivity.getDeviceProfile().isMultiWindowMode;
        Rect insets = thumbnail.getInsetsToDrawInFullscreen(isMultiWindowMode);
        mCurrentDrawnInsets.set((int) (insets.left * mFullscreenProgress),
                (int) (insets.top * mFullscreenProgress),
                (int) (insets.right * mFullscreenProgress),
                (int) (insets.bottom * mFullscreenProgress));
        float fullscreenCornerRadius = isMultiWindowMode ? 0 : mWindowCornerRadius;
        float cornerRadius = Utilities.mapRange(mFullscreenProgress, mCornerRadius,
                mWindowCornerRadius) / getRecentsView().getScaleX();
                fullscreenCornerRadius) / getRecentsView().getScaleX();

        thumbnail.setCurrentDrawnInsetsAndRadius(mCurrentDrawnInsets, cornerRadius);
        mOutlineProvider.setCurrentDrawnInsetsAndRadius(mCurrentDrawnInsets, cornerRadius);