From 069dfe67a27a068d3893f42d3fb54c4255503f73 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Wed, 4 May 2016 17:24:47 -0700 Subject: [PATCH] Don't resize task when dismissing docked stack Make sure to "freeze" bounds while dismissing the docked stack by either maximizing or minimizing it. Bug: 28196862 Change-Id: Ifcd9deda340de8bc46df949df2fa1049e2f45f92 --- .../systemui/stackdivider/DividerView.java | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java index 73797062c4b6c..9ba1cc945afa8 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java @@ -530,16 +530,12 @@ public class DividerView extends FrameLayout implements OnTouchListener, private ValueAnimator getFlingAnimator(int position, final SnapTarget snapTarget, final long endDelay) { + final boolean taskPositionSameAtEnd = snapTarget.flag == SnapTarget.FLAG_NONE; ValueAnimator anim = ValueAnimator.ofInt(position, snapTarget.position); - anim.addUpdateListener(new AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - resizeStack((Integer) animation.getAnimatedValue(), - animation.getAnimatedFraction() == 1f - ? TASK_POSITION_SAME - : snapTarget.position, snapTarget); - } - }); + anim.addUpdateListener(animation -> resizeStack((Integer) animation.getAnimatedValue(), + taskPositionSameAtEnd && animation.getAnimatedFraction() == 1f + ? TASK_POSITION_SAME + : snapTarget.position, snapTarget)); Runnable endAction = () -> { commitSnapFlags(snapTarget); mWindowManagerProxy.setResizing(false); @@ -919,10 +915,10 @@ public class DividerView extends FrameLayout implements OnTouchListener, private int restrictDismissingTaskPosition(int taskPosition, int dockSide, SnapTarget snapTarget) { if (snapTarget.flag == SnapTarget.FLAG_DISMISS_START && dockSideTopLeft(dockSide)) { - return mSnapAlgorithm.getFirstSplitTarget().position; + return Math.max(mSnapAlgorithm.getFirstSplitTarget().position, mStartPosition); } else if (snapTarget.flag == SnapTarget.FLAG_DISMISS_END && dockSideBottomRight(dockSide)) { - return mSnapAlgorithm.getLastSplitTarget().position; + return Math.min(mSnapAlgorithm.getLastSplitTarget().position, mStartPosition); } else { return taskPosition; }