Merge "Don't allow removed DividerView to resize stack" into oc-dev

am: d7427d5d90

Change-Id: I6dfe65d2d3e2c69be14b472dcd3e28389e70655f
This commit is contained in:
Wale Ogunwale
2017-06-06 17:53:46 +00:00
committed by android-build-merger
2 changed files with 15 additions and 0 deletions

View File

@@ -91,6 +91,9 @@ public class Divider extends SystemUI {
}
private void removeDivider() {
if (mView != null) {
mView.onDividerRemoved();
}
mWindowManager.remove();
}

View File

@@ -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) {