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

Commit 13355df5 authored by Yorke Lee's avatar Yorke Lee Committed by Android (Google) Code Review
Browse files

Merge "Don't clamp override config to screen area for freeform task"

parents 7a36073c f54f9da2
Loading
Loading
Loading
Loading
+19 −14
Original line number Diff line number Diff line
@@ -1766,23 +1766,28 @@ final class TaskRecord extends ConfigurationContainer {
            boolean overrideWidth, boolean overrideHeight) {
        mTmpNonDecorBounds.set(bounds);
        mTmpStableBounds.set(bounds);
        subtractNonDecorInsets(
                mTmpNonDecorBounds, insetBounds != null ? insetBounds : bounds,
                overrideWidth, overrideHeight);
        subtractStableInsets(
                mTmpStableBounds, insetBounds != null ? insetBounds : bounds,
                overrideWidth, overrideHeight);

        // For calculating screenWidthDp, screenHeightDp, we use the stable inset screen area,
        // i.e. the screen area without the system bars.
        // Additionally task dimensions should not be bigger than its parents dimensions.
        final Configuration parentConfig = getParent().getConfiguration();
        config.unset();
        final float density = parentConfig.densityDpi * DisplayMetrics.DENSITY_DEFAULT_SCALE;
        config.screenWidthDp =
                Math.min((int)(mTmpStableBounds.width() / density), parentConfig.screenWidthDp);
        config.screenHeightDp =
                Math.min((int)(mTmpStableBounds.height() / density), parentConfig.screenHeightDp);
        final boolean isFloatingTask = mStack != null && StackId.tasksAreFloating(mStack.mStackId);
        if (isFloatingTask) {
            // Floating tasks should not be resized to the screen's bounds.
            config.screenWidthDp = (int) (mTmpStableBounds.width() / density);
            config.screenHeightDp = (int) (mTmpStableBounds.height() / density);
        } else {
            // For calculating screenWidthDp, screenWidthDp, we use the stable inset screen area,
            // i.e. the screen area without the system bars.
            // Additionally task dimensions should not be bigger than its parents dimensions.
            subtractNonDecorInsets(mTmpNonDecorBounds, insetBounds != null ? insetBounds : bounds,
                    overrideWidth, overrideHeight);
            subtractStableInsets(mTmpStableBounds, insetBounds != null ? insetBounds : bounds,
                    overrideWidth, overrideHeight);
            config.screenWidthDp = Math.min(
                    (int) (mTmpStableBounds.width() / density), parentConfig.screenWidthDp);
            config.screenHeightDp = Math.min(
                    (int) (mTmpStableBounds.height() / density), parentConfig.screenHeightDp);
        }

        // TODO: Orientation?
        config.orientation = (config.screenWidthDp <= config.screenHeightDp)