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

Commit 15ba1515 authored by Wale Ogunwale's avatar Wale Ogunwale
Browse files

Don't allow removed DividerView to resize stack

If a divider view is removed or in the process of been removed, then it
should no longer have any influence on the size of stacks.

Fixes: 62273599
Test: go/wm-smoke
Test: enter split-screen and make sure recents is visible, lock and
unlock the device and verify things look fine.

Change-Id: I79aca82be8a7013328b78e82f508c4ed9fa48a4a
parent 2f77da6e
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -91,6 +91,9 @@ public class Divider extends SystemUI {
    }

    private void removeDivider() {
        if (mView != null) {
            mView.onDividerRemoved();
        }
        mWindowManager.remove();
    }

+12 −0
Original line number Diff line number Diff line
@@ -162,6 +162,9 @@ public class DividerView extends FrameLayout implements OnTouchListener,
    private DividerState mState;
    private final SurfaceFlingerVsyncChoreographer mSfChoreographer;

    // The view is removed or in the process of been removed from the system.
    private boolean mRemoved;

    private final Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
@@ -323,6 +326,11 @@ public class DividerView extends FrameLayout implements OnTouchListener,
        EventBus.getDefault().unregister(this);
    }

    void onDividerRemoved() {
        mRemoved = true;
        mHandler.removeMessages(MSG_RESIZE_STACK);
    }

    @Override
    public WindowInsets onApplyWindowInsets(WindowInsets insets) {
        if (mStableInsets.left != insets.getStableInsetLeft()
@@ -917,6 +925,10 @@ public class DividerView extends FrameLayout implements OnTouchListener,
    }

    public void resizeStack(int position, int taskPosition, SnapTarget taskSnapTarget) {
        if (mRemoved) {
            // This divider view has been removed so shouldn't have any additional influence.
            return;
        }
        calculateBoundsForPosition(position, mDockSide, mDockedRect);

        if (mDockedRect.equals(mLastResizeRect) && !mEntranceAnimationRunning) {