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

Commit db4b70c2 authored by Liran Binyamin's avatar Liran Binyamin Committed by Android (Google) Code Review
Browse files

Merge "Allow TaskView to move windows" into main

parents 8fe8ac09 9500bd06
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback,
    private Region mObscuredTouchRegion;
    private Insets mCaptionInsets;
    private Handler mHandler;
    private boolean mIsMovingWindows;

    public TaskView(Context context, TaskViewController taskViewController,
            TaskViewTaskController taskViewTaskController) {
@@ -96,6 +97,24 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback,
        return mTaskViewTaskController;
    }

    /**
     * Sets whether this task view is starting to move windows or just finished moving windows.
     *
     * <p>This is intended to be used temporarily while the task view is moving between windows to
     * avoid having its surface destroyed. Call this method with {@code true} before removing it
     * from the old window and again with {@code false} before adding it to the new window.
     */
    public void setIsMovingWindows(boolean isMovingWindows) {
        mIsMovingWindows = isMovingWindows;
        if (isMovingWindows) {
            getViewTreeObserver().removeOnComputeInternalInsetsListener(this);
            mHandler = Handler.getMain();
        } else {
            getViewTreeObserver().addOnComputeInternalInsetsListener(this);
            mHandler = getHandler();
        }
    }

    /**
     * Launch a new activity.
     *
@@ -311,8 +330,19 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback,
        }
    }

    @Override
    protected void onWindowVisibilityChanged(int visibility) {
        if (mIsMovingWindows) {
            return;
        }
        super.onWindowVisibilityChanged(visibility);
    }

    @Override
    protected void onAttachedToWindow() {
        if (mIsMovingWindows) {
            return;
        }
        super.onAttachedToWindow();
        getViewTreeObserver().addOnComputeInternalInsetsListener(this);
        mHandler = getHandler();
@@ -320,6 +350,9 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback,

    @Override
    protected void onDetachedFromWindow() {
        if (mIsMovingWindows) {
            return;
        }
        super.onDetachedFromWindow();
        getViewTreeObserver().removeOnComputeInternalInsetsListener(this);
        mHandler = Handler.getMain();