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

Commit b56c4310 authored by Garfield Tan's avatar Garfield Tan
Browse files

Use RootTaskDisplayAreaOrganizer to obtain TDA windowing mode

CaptionWindowDecorViewModel used to use
WindowConfiguration#getDisplayWindowingMode() to obtain TDA windowing
mode. That flag is to be deprecated and misnamed after we fixed display
windowing mode to fullscreen. This CL removes the dependency on that
field.

Bug: 333724879
Test: Maximize works on CF PC.
Change-Id: Ie29a2b47e626ddf333f762befe12ab6c3618726c
parent 829ab8b5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -241,6 +241,7 @@ public abstract class WMShellModule {
                mainChoreographer,
                taskOrganizer,
                displayController,
                rootTaskDisplayAreaOrganizer,
                syncQueue,
                transitions);
    }
+9 −1
Original line number Diff line number Diff line
@@ -30,12 +30,14 @@ import android.view.Choreographer;
import android.view.MotionEvent;
import android.view.SurfaceControl;
import android.view.View;
import android.window.DisplayAreaInfo;
import android.window.WindowContainerToken;
import android.window.WindowContainerTransaction;

import androidx.annotation.Nullable;

import com.android.wm.shell.R;
import com.android.wm.shell.RootTaskDisplayAreaOrganizer;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.SyncTransactionQueue;
@@ -53,6 +55,7 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel {
    private final Handler mMainHandler;
    private final Choreographer mMainChoreographer;
    private final DisplayController mDisplayController;
    private final RootTaskDisplayAreaOrganizer mRootTaskDisplayAreaOrganizer;
    private final SyncTransactionQueue mSyncQueue;
    private final Transitions mTransitions;
    private TaskOperations mTaskOperations;
@@ -65,6 +68,7 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel {
            Choreographer mainChoreographer,
            ShellTaskOrganizer taskOrganizer,
            DisplayController displayController,
            RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer,
            SyncTransactionQueue syncQueue,
            Transitions transitions) {
        mContext = context;
@@ -72,6 +76,7 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel {
        mMainChoreographer = mainChoreographer;
        mTaskOrganizer = taskOrganizer;
        mDisplayController = displayController;
        mRootTaskDisplayAreaOrganizer = rootTaskDisplayAreaOrganizer;
        mSyncQueue = syncQueue;
        mTransitions = transitions;
        if (!Transitions.ENABLE_SHELL_TRANSITIONS) {
@@ -231,7 +236,10 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel {
                mTaskOperations.minimizeTask(mTaskToken);
            } else if (id == R.id.maximize_window) {
                RunningTaskInfo taskInfo = mTaskOrganizer.getRunningTaskInfo(mTaskId);
                mTaskOperations.maximizeTask(taskInfo);
                final DisplayAreaInfo rootDisplayAreaInfo =
                        mRootTaskDisplayAreaOrganizer.getDisplayAreaInfo(taskInfo.displayId);
                mTaskOperations.maximizeTask(taskInfo,
                        rootDisplayAreaInfo.configuration.windowConfiguration.getWindowingMode());
            }
        }

+2 −4
Original line number Diff line number Diff line
@@ -91,14 +91,12 @@ class TaskOperations {
        }
    }

    void maximizeTask(RunningTaskInfo taskInfo) {
    void maximizeTask(RunningTaskInfo taskInfo, int containerWindowingMode) {
        WindowContainerTransaction wct = new WindowContainerTransaction();
        int targetWindowingMode = taskInfo.getWindowingMode() != WINDOWING_MODE_FULLSCREEN
                ? WINDOWING_MODE_FULLSCREEN : WINDOWING_MODE_FREEFORM;
        int displayWindowingMode =
                taskInfo.configuration.windowConfiguration.getDisplayWindowingMode();
        wct.setWindowingMode(taskInfo.token,
                targetWindowingMode == displayWindowingMode
                targetWindowingMode == containerWindowingMode
                        ? WINDOWING_MODE_UNDEFINED : targetWindowingMode);
        if (targetWindowingMode == WINDOWING_MODE_FULLSCREEN) {
            wct.setBounds(taskInfo.token, null);