diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java index 90c65580c7fdf..8f24ec712e83b 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java @@ -767,17 +767,22 @@ public class DividerView extends FrameLayout implements OnTouchListener, mDockedStackMinimized = minimized; } else if (mDockedStackMinimized != minimized) { mIsInMinimizeInteraction = true; - if (minimized && (mCurrentAnimator == null || !mCurrentAnimator.isRunning())) { + if (minimized && (mCurrentAnimator == null || !mCurrentAnimator.isRunning()) + && (mDividerPositionBeforeMinimized <= 0 || !mAdjustedForIme)) { mDividerPositionBeforeMinimized = getCurrentPosition(); } mMinimizedSnapAlgorithm = null; mDockedStackMinimized = minimized; initializeSnapAlgorithm(); - stopDragging(getCurrentPosition(), minimized ? - mMinimizedSnapAlgorithm.getMiddleTarget() : - mSnapAlgorithm.calculateNonDismissingSnapTarget( + stopDragging(minimized + ? mDividerPositionBeforeMinimized + : getCurrentPosition(), + minimized + ? mMinimizedSnapAlgorithm.getMiddleTarget() + : mSnapAlgorithm.calculateNonDismissingSnapTarget( mDividerPositionBeforeMinimized), animDuration, Interpolators.FAST_OUT_SLOW_IN, 0); + setAdjustedForIme(false, animDuration); } if (!minimized) { mBackground.animate().withEndAction(mResetBackgroundRunnable); @@ -820,6 +825,9 @@ public class DividerView extends FrameLayout implements OnTouchListener, .setDuration(animDuration) .start(); mAdjustedForIme = adjustedForIme; + if (mHomeStackResizable && adjustedForIme) { + mDividerPositionBeforeMinimized = getCurrentPosition(); + } } private void resetBackground() {