Merge "Fix TaskView cropping for transient taskbar" into tm-qpr-dev am: 42c1669f5a

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21538193

Change-Id: Ia5ca3d0fd1ad30e88a8353554333cbc0c711220c
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Thales Lima
2023-03-13 13:31:14 +00:00
committed by Automerger Merge Worker
2 changed files with 11 additions and 40 deletions

View File

@@ -33,8 +33,6 @@ public class PreviewPositionHelper {
*/ */
public static final int STAGE_POSITION_BOTTOM_OR_RIGHT = 1; 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 final Matrix mMatrix = new Matrix();
private boolean mIsOrientationChanged; private boolean mIsOrientationChanged;
private SplitBounds mSplitBounds; private SplitBounds mSplitBounds;
@@ -70,33 +68,6 @@ public class PreviewPositionHelper {
int thumbnailRotation = thumbnailData.rotation; int thumbnailRotation = thumbnailData.rotation;
int deltaRotate = getRotationDelta(currentRotation, thumbnailRotation); int deltaRotate = getRotationDelta(currentRotation, thumbnailRotation);
RectF thumbnailClipHint = new RectF(); 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; float scale = thumbnailData.scale;
final float thumbnailScale; final float thumbnailScale;
@@ -116,10 +87,8 @@ public class PreviewPositionHelper {
float surfaceWidth = thumbnailBounds.width() / scale; float surfaceWidth = thumbnailBounds.width() / scale;
float surfaceHeight = thumbnailBounds.height() / scale; float surfaceHeight = thumbnailBounds.height() / scale;
float availableWidth = surfaceWidth float availableWidth = surfaceWidth;
- (thumbnailClipHint.left + thumbnailClipHint.right); float availableHeight = surfaceHeight;
float availableHeight = surfaceHeight
- (thumbnailClipHint.top + thumbnailClipHint.bottom);
float canvasAspect = canvasWidth / (float) canvasHeight; float canvasAspect = canvasWidth / (float) canvasHeight;
float availableAspect = isRotated float availableAspect = isRotated
@@ -210,8 +179,6 @@ public class PreviewPositionHelper {
setThumbnailRotation(deltaRotate, thumbnailBounds); setThumbnailRotation(deltaRotate, thumbnailBounds);
} }
mClippedInsets.set(0, 0, 0, scaledTaskbarSize);
mMatrix.postScale(thumbnailScale, thumbnailScale); mMatrix.postScale(thumbnailScale, thumbnailScale);
mIsOrientationChanged = isOrientationDifferent; mIsOrientationChanged = isOrientationDifferent;
} }
@@ -250,8 +217,4 @@ public class PreviewPositionHelper {
} }
mMatrix.postTranslate(translateX, translateY); mMatrix.postTranslate(translateX, translateY);
} }
public RectF getClippedInsets() {
return mClippedInsets;
}
} }

View File

@@ -24,6 +24,7 @@ import com.android.internal.R as AndroidR
import com.android.systemui.mediaprojection.appselector.MediaProjectionAppSelectorScope import com.android.systemui.mediaprojection.appselector.MediaProjectionAppSelectorScope
import com.android.systemui.mediaprojection.appselector.view.TaskPreviewSizeProvider.TaskPreviewSizeListener import com.android.systemui.mediaprojection.appselector.view.TaskPreviewSizeProvider.TaskPreviewSizeListener
import com.android.systemui.shared.recents.utilities.Utilities.isLargeScreen 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.CallbackController
import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener
@@ -61,8 +62,15 @@ constructor(
val width = windowMetrics.bounds.width() val width = windowMetrics.bounds.width()
var height = maximumWindowHeight var height = maximumWindowHeight
// TODO(b/271410803): Read isTransientTaskbar from Launcher
val isLargeScreen = isLargeScreen(context) 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 = val taskbarSize =
context.resources.getDimensionPixelSize(AndroidR.dimen.taskbar_frame_height) context.resources.getDimensionPixelSize(AndroidR.dimen.taskbar_frame_height)
height -= taskbarSize height -= taskbarSize