diff --git a/quickstep/src/com/android/launcher3/uioverrides/LandscapeStatesTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/LandscapeStatesTouchController.java index 355b88d910..30ceb43f93 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/LandscapeStatesTouchController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/LandscapeStatesTouchController.java @@ -60,12 +60,13 @@ public class LandscapeStatesTouchController extends PortraitStatesTouchControlle @Override protected LauncherState getTargetState(LauncherState fromState, boolean isDragTowardPositive) { - if (fromState == ALL_APPS) { + if (fromState == ALL_APPS && !isDragTowardPositive) { // Should swipe down go to OVERVIEW instead? return TouchInteractionService.isConnected() ? mLauncher.getStateManager().getLastState() : NORMAL; - } else { + } else if (isDragTowardPositive) { return ALL_APPS; } + return fromState; } } diff --git a/quickstep/src/com/android/launcher3/uioverrides/PortraitStatesTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/PortraitStatesTouchController.java index 1b65ca0b05..c92264f3a8 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/PortraitStatesTouchController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/PortraitStatesTouchController.java @@ -140,7 +140,7 @@ public class PortraitStatesTouchController extends AbstractStateChangeTouchContr @Override protected LauncherState getTargetState(LauncherState fromState, boolean isDragTowardPositive) { - if (fromState == ALL_APPS) { + if (fromState == ALL_APPS && !isDragTowardPositive) { // Should swipe down go to OVERVIEW instead? return TouchInteractionService.isConnected() ? mLauncher.getStateManager().getLastState() : NORMAL; diff --git a/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java b/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java index 9726704ddb..3d85ac3c6d 100644 --- a/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java +++ b/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java @@ -124,6 +124,10 @@ public abstract class AbstractStateChangeTouchController extends AnimatorListene return mLauncher.getAllAppsController().getShiftRange(); } + /** + * Returns the state to go to from fromState given the drag direction. If there is no state in + * that direction, returns fromState. + */ protected abstract LauncherState getTargetState(LauncherState fromState, boolean isDragTowardPositive); diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/AllAppsSwipeController.java b/src_ui_overrides/com/android/launcher3/uioverrides/AllAppsSwipeController.java index c97c3ccecb..d1cddc18f6 100644 --- a/src_ui_overrides/com/android/launcher3/uioverrides/AllAppsSwipeController.java +++ b/src_ui_overrides/com/android/launcher3/uioverrides/AllAppsSwipeController.java @@ -54,7 +54,12 @@ public class AllAppsSwipeController extends AbstractStateChangeTouchController { @Override protected LauncherState getTargetState(LauncherState fromState, boolean isDragTowardPositive) { - return fromState == ALL_APPS ? NORMAL : ALL_APPS; + if (fromState == NORMAL && isDragTowardPositive) { + return ALL_APPS; + } else if (fromState == ALL_APPS && !isDragTowardPositive) { + return NORMAL; + } + return fromState; } @Override