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

This commit is contained in:
TreeHugger Robot
2017-06-06 17:46:31 +00:00
committed by Android (Google) Code Review
2 changed files with 15 additions and 0 deletions

View File

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

View File

@@ -162,6 +162,9 @@ public class DividerView extends FrameLayout implements OnTouchListener,
private DividerState mState; private DividerState mState;
private final SurfaceFlingerVsyncChoreographer mSfChoreographer; 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() { private final Handler mHandler = new Handler() {
@Override @Override
public void handleMessage(Message msg) { public void handleMessage(Message msg) {
@@ -323,6 +326,11 @@ public class DividerView extends FrameLayout implements OnTouchListener,
EventBus.getDefault().unregister(this); EventBus.getDefault().unregister(this);
} }
void onDividerRemoved() {
mRemoved = true;
mHandler.removeMessages(MSG_RESIZE_STACK);
}
@Override @Override
public WindowInsets onApplyWindowInsets(WindowInsets insets) { public WindowInsets onApplyWindowInsets(WindowInsets insets) {
if (mStableInsets.left != insets.getStableInsetLeft() 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) { 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); calculateBoundsForPosition(position, mDockSide, mDockedRect);
if (mDockedRect.equals(mLastResizeRect) && !mEntranceAnimationRunning) { if (mDockedRect.equals(mLastResizeRect) && !mEntranceAnimationRunning) {