diff options
Diffstat (limited to 'src/com/android/launcher3/touch/AbstractStateChangeTouchController.java')
-rw-r--r-- | src/com/android/launcher3/touch/AbstractStateChangeTouchController.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java b/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java index cec4574fd8..9aed4ebb51 100644 --- a/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java +++ b/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java @@ -22,6 +22,7 @@ import static com.android.launcher3.LauncherAnimUtils.newCancelListener; import static com.android.launcher3.LauncherState.ALL_APPS; import static com.android.launcher3.LauncherState.NORMAL; import static com.android.launcher3.LauncherState.OVERVIEW; +import static com.android.launcher3.MotionEventsUtils.isTrackpadScroll; import static com.android.launcher3.anim.AnimatorListeners.forEndCallback; import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_ALLAPPS; import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_HOME; @@ -68,6 +69,7 @@ public abstract class AbstractStateChangeTouchController protected boolean mGoingBetweenStates = true; // Ratio of transition process [0, 1] to drag displacement (px) protected float mProgressMultiplier; + protected boolean mIsTrackpadReverseScroll; private boolean mNoIntercept; private boolean mIsLogContainerSet; @@ -92,6 +94,9 @@ public abstract class AbstractStateChangeTouchController return false; } + mIsTrackpadReverseScroll = !mLauncher.isNaturalScrollingEnabled() + && isTrackpadScroll(ev); + // Now figure out which direction scroll events the controller will start // calling the callbacks. final int directionsToDetectScroll; @@ -248,6 +253,11 @@ public abstract class AbstractStateChangeTouchController } mIsLogContainerSet = true; } + // Only reverse the gesture to open all apps (not close) when trackpad reverse scrolling is + // on. + if (mIsTrackpadReverseScroll && mStartState == NORMAL) { + displacement = -displacement; + } return onDrag(displacement); } @@ -274,6 +284,11 @@ public abstract class AbstractStateChangeTouchController return; } + // Only reverse the gesture to open all apps (not close) when trackpad reverse scrolling is + // on. + if (mIsTrackpadReverseScroll && mStartState == NORMAL) { + velocity = -velocity; + } boolean fling = mDetector.isFling(velocity); boolean blockedFling = fling && mFlingBlockCheck.isBlocked(); @@ -412,9 +427,15 @@ public abstract class AbstractStateChangeTouchController mGoingBetweenStates = true; mDetector.finishedScrolling(); mDetector.setDetectableScrollConditions(0, false); + mIsTrackpadReverseScroll = false; } private void cancelAnimationControllers() { mCurrentAnimation = null; } + + protected boolean shouldOpenAllApps(boolean isDragTowardPositive) { + return (isDragTowardPositive && !mIsTrackpadReverseScroll) + || (!isDragTowardPositive && mIsTrackpadReverseScroll); + } } |