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

Commit 071b99dc authored by Thales Lima's avatar Thales Lima
Browse files

Fix TaskView cropping for transient taskbar

TaskView clipping is not necessary anymore because task in Overview will always be the same aspect ratio as the app when in fullscreen.

Fix: 268211636
Test: manual trigger of Overview (landscape, portrait, split screen)
Change-Id: I4538bd665dfef0febc297a3edca7b1ed97b34d23
Merged-In: I4538bd665dfef0febc297a3edca7b1ed97b34d23
parent bf1ccb78
Loading
Loading
Loading
Loading
+2 −39
Original line number Diff line number Diff line
@@ -33,8 +33,6 @@ public class PreviewPositionHelper {
     */
    public static final int STAGE_POSITION_BOTTOM_OR_RIGHT = 1;

    // Contains the portion of the thumbnail that is unclipped when fullscreen progress = 1.
    private final RectF mClippedInsets = new RectF();
    private final Matrix mMatrix = new Matrix();
    private boolean mIsOrientationChanged;
    private SplitBounds mSplitBounds;
@@ -70,33 +68,6 @@ public class PreviewPositionHelper {
        int thumbnailRotation = thumbnailData.rotation;
        int deltaRotate = getRotationDelta(currentRotation, thumbnailRotation);
        RectF thumbnailClipHint = new RectF();

        float scaledTaskbarSize;
        float canvasScreenRatio;
        if (mSplitBounds != null) {
            if (mSplitBounds.appsStackedVertically) {
                if (mDesiredStagePosition == STAGE_POSITION_TOP_OR_LEFT) {
                    // Top app isn't cropped at all by taskbar
                    canvasScreenRatio = 0;
                } else {
                    // Same as fullscreen ratio
                    canvasScreenRatio = (float) canvasWidth / screenWidthPx;
                }
            } else {
                // For landscape, scale the width
                float taskPercent = mDesiredStagePosition == STAGE_POSITION_TOP_OR_LEFT
                        ? mSplitBounds.leftTaskPercent
                        : (1 - (mSplitBounds.leftTaskPercent + mSplitBounds.dividerWidthPercent));
                // Scale landscape width to that of actual screen
                float fullscreenTaskWidth = screenWidthPx * taskPercent;
                canvasScreenRatio = canvasWidth / fullscreenTaskWidth;
            }
        } else {
            canvasScreenRatio = (float) canvasWidth / screenWidthPx;
        }
        scaledTaskbarSize = taskbarSize * canvasScreenRatio;
        thumbnailClipHint.bottom = isLargeScreen ? scaledTaskbarSize : 0;

        float scale = thumbnailData.scale;
        final float thumbnailScale;

@@ -116,10 +87,8 @@ public class PreviewPositionHelper {

            float surfaceWidth = thumbnailBounds.width() / scale;
            float surfaceHeight = thumbnailBounds.height() / scale;
            float availableWidth = surfaceWidth
                    - (thumbnailClipHint.left + thumbnailClipHint.right);
            float availableHeight = surfaceHeight
                    - (thumbnailClipHint.top + thumbnailClipHint.bottom);
            float availableWidth = surfaceWidth;
            float availableHeight = surfaceHeight;

            float canvasAspect = canvasWidth / (float) canvasHeight;
            float availableAspect = isRotated
@@ -210,8 +179,6 @@ public class PreviewPositionHelper {
            setThumbnailRotation(deltaRotate, thumbnailBounds);
        }

        mClippedInsets.set(0, 0, 0, scaledTaskbarSize);

        mMatrix.postScale(thumbnailScale, thumbnailScale);
        mIsOrientationChanged = isOrientationDifferent;
    }
@@ -250,8 +217,4 @@ public class PreviewPositionHelper {
        }
        mMatrix.postTranslate(translateX, translateY);
    }

    public RectF getClippedInsets() {
        return mClippedInsets;
    }
}
+9 −1
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import com.android.internal.R as AndroidR
import com.android.systemui.mediaprojection.appselector.MediaProjectionAppSelectorScope
import com.android.systemui.mediaprojection.appselector.view.TaskPreviewSizeProvider.TaskPreviewSizeListener
import com.android.systemui.shared.recents.utilities.Utilities.isLargeScreen
import com.android.systemui.shared.system.QuickStepContract
import com.android.systemui.statusbar.policy.CallbackController
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener
@@ -61,8 +62,15 @@ constructor(
        val width = windowMetrics.bounds.width()
        var height = maximumWindowHeight

        // TODO(b/271410803): Read isTransientTaskbar from Launcher
        val isLargeScreen = isLargeScreen(context)
        if (isLargeScreen) {
        val isTransientTaskbar =
            QuickStepContract.isGesturalMode(
                context.resources.getInteger(
                    com.android.internal.R.integer.config_navBarInteractionMode
                )
            )
        if (isLargeScreen && !isTransientTaskbar) {
            val taskbarSize =
                context.resources.getDimensionPixelSize(AndroidR.dimen.taskbar_frame_height)
            height -= taskbarSize