From 8dccd23675150044ce33cd28bf32a822721c3564 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Fri, 25 Mar 2016 18:10:14 -0700 Subject: [PATCH] Some divider handling fixes - Fix calculation on which side to apply dimming. - Fix dismissing parallax logic for new resize handling. - Remove wrong/unnecessary resizeStack call Bug: 27738239 Change-Id: Iaac671ca03e19aa70fa779d319b5fe84ff3b40ba --- .../systemui/stackdivider/DividerView.java | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java index bab6baa1c5f49..748e523bf922a 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java @@ -383,13 +383,6 @@ public class DividerView extends FrameLayout implements OnTouchListener, x = (int) event.getRawX(); y = (int) event.getRawY(); - if (mMoving && mDockSide != WindowManager.DOCKED_INVALID) { - int position = calculatePosition(x, y); - SnapTarget snapTarget = mSnapAlgorithm.calculateSnapTarget(position, - 0 /* velocity */, false /* hardDismiss */); - resizeStack(calculatePosition(x, y), snapTarget.position, snapTarget); - } - mVelocityTracker.computeCurrentVelocity(1000); int position = calculatePosition(x, y); stopDragging(position, isHorizontalDivision() ? mVelocityTracker.getYVelocity() @@ -734,21 +727,22 @@ public class DividerView extends FrameLayout implements OnTouchListener, mSnapAlgorithm.calculateDismissingFraction(position))); SnapTarget dismissTarget = null; SnapTarget splitTarget = null; - if ((snapTarget.flag == SnapTarget.FLAG_DISMISS_START - || snapTarget == mSnapAlgorithm.getFirstSplitTarget()) + int start = 0; + if (position <= mSnapAlgorithm.getLastSplitTarget().position && dockSideTopLeft(dockSide)) { dismissTarget = mSnapAlgorithm.getDismissStartTarget(); splitTarget = mSnapAlgorithm.getFirstSplitTarget(); - } else if ((snapTarget.flag == SnapTarget.FLAG_DISMISS_END - || snapTarget == mSnapAlgorithm.getLastSplitTarget()) + start = taskPosition; + } else if (position >= mSnapAlgorithm.getLastSplitTarget().position && dockSideBottomRight(dockSide)) { dismissTarget = mSnapAlgorithm.getDismissEndTarget(); splitTarget = mSnapAlgorithm.getLastSplitTarget(); + start = splitTarget.position; } if (dismissTarget != null && fraction > 0f && isDismissing(splitTarget, position, dockSide)) { fraction = calculateParallaxDismissingFraction(fraction, dockSide); - int offsetPosition = (int) (taskPosition + + int offsetPosition = (int) (start + fraction * (dismissTarget.position - splitTarget.position)); int width = taskRect.width(); int height = taskRect.height(); @@ -796,11 +790,12 @@ public class DividerView extends FrameLayout implements OnTouchListener, } private int getStackIdForDismissTarget(SnapTarget dismissTarget) { - if (dismissTarget.flag == SnapTarget.FLAG_DISMISS_START && - (mDockSide == WindowManager.DOCKED_LEFT || mDockSide == WindowManager.DOCKED_TOP)) { + if ((dismissTarget.flag == SnapTarget.FLAG_DISMISS_START && dockSideTopLeft(mDockSide)) + || (dismissTarget.flag == SnapTarget.FLAG_DISMISS_END + && dockSideBottomRight(mDockSide))) { return StackId.DOCKED_STACK_ID; } else { - return StackId.FULLSCREEN_WORKSPACE_STACK_ID; + return StackId.HOME_STACK_ID; } }