summaryrefslogtreecommitdiff
path: root/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3/touch/AbstractStateChangeTouchController.java')
-rw-r--r--src/com/android/launcher3/touch/AbstractStateChangeTouchController.java21
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);
+ }
}