From 54ede0bfca292e9ee3707f543b53d90f15b6425f Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Mon, 14 Nov 2022 21:14:33 -0800 Subject: [PATCH] Ignore cropping taskbar for top app in split portrait * See ag/20470413 Bug: 219411750 Test: Swipe up w/ stashed taskbar in portrait. Thumbnail cutout doesn't appear when dragging to fullscreen Change-Id: I5f8279a3d7a1cfe14c6fafaa15307d258a6f2f10 --- .../utilities/PreviewPositionHelper.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/PreviewPositionHelper.java b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/PreviewPositionHelper.java index f6c75a2d27528..c9ea79432360f 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/PreviewPositionHelper.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/PreviewPositionHelper.java @@ -39,6 +39,7 @@ public class PreviewPositionHelper { private boolean mIsOrientationChanged; private SplitBounds mSplitBounds; private int mDesiredStagePosition; + private boolean mTaskbarInApp; public Matrix getMatrix() { return mMatrix; @@ -57,6 +58,10 @@ public class PreviewPositionHelper { mDesiredStagePosition = desiredStagePosition; } + public void setTaskbarInApp(boolean taskbarInApp) { + mTaskbarInApp = taskbarInApp; + } + /** * Updates the matrix based on the provided parameters */ @@ -83,8 +88,18 @@ public class PreviewPositionHelper { ? mSplitBounds.topTaskPercent : (1 - (mSplitBounds.topTaskPercent + mSplitBounds.dividerHeightPercent)); // Scale portrait height to that of (actual screen - taskbar inset) - fullscreenTaskHeight = (screenHeightPx - taskbarSize) * taskPercent; - canvasScreenRatio = canvasHeight / fullscreenTaskHeight; + fullscreenTaskHeight = (screenHeightPx) * taskPercent; + if (mTaskbarInApp) { + canvasScreenRatio = canvasHeight / fullscreenTaskHeight; + } else { + 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 taskPercent = mDesiredStagePosition == STAGE_POSITION_TOP_OR_LEFT