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

Commit 54d74e46 authored by Naomi Musgrave's avatar Naomi Musgrave
Browse files

Vertically center SCM-eligible on warm launch

Currently, a landscape activity that is eligible for size compat
mode is vertically centered on cold launch, and when put into
size compat mode. Fix an issue introduced in a prior change,
where vertical centering is not applied on warm launch.

Bug: 207849112
Bug: 205682025
Test: atest com.android.server.wm.SizeCompatTests
Change-Id: Id72e6efae49963ac9b6dd89cbc8c99e3a85b67f2
parent b0a2e9f7
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -7922,9 +7922,17 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        // Above coordinates are in "@" space, now place "*" and "#" to screen space.
        final boolean fillContainer = resolvedBounds.equals(containingBounds);
        final int screenPosX = fillContainer ? containerBounds.left : containerAppBounds.left;
        final int screenPosY = mSizeCompatBounds == null
        // If the activity is not in size compat mode, calculate vertical centering
        //     from the container and resolved bounds.
        // If the activity is in size compat mode, calculate vertical centering
        //     from the container and size compat bounds.
        // The container bounds contain the parent bounds offset in the display, for
        // example when an activity is in the lower split of split screen.
        final int screenPosY = (mSizeCompatBounds == null
                ? (containerBounds.height() - resolvedBounds.height()) / 2
                : (containerBounds.height() - mSizeCompatBounds.height()) / 2;
                : (containerBounds.height() - mSizeCompatBounds.height()) / 2)
                + containerBounds.top;

        if (screenPosX != 0 || screenPosY != 0) {
            if (mSizeCompatBounds != null) {
                mSizeCompatBounds.offset(screenPosX, screenPosY);