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

am: b4f383c26e

Change-Id: Ibded63bebba40bc29978dee2717dd61a36d609a9
This commit is contained in:
Wale Ogunwale
2017-06-06 18:08:49 +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()
@@ -927,6 +935,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) {