summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Wickham <twickham@google.com>2018-04-06 14:22:46 -0700
committerTony Wickham <twickham@google.com>2018-04-06 14:32:18 -0700
commit6270a0ea18d27952fec20da04d64ca4f7e223849 (patch)
tree3c263280970b36b02981aaf4a1ec2733fb00a061
parentb3ad0edc1476ae1562bb5e0b26f253b2e504285f (diff)
downloadandroid_packages_apps_Trebuchet-6270a0ea18d27952fec20da04d64ca4f7e223849.tar.gz
android_packages_apps_Trebuchet-6270a0ea18d27952fec20da04d64ca4f7e223849.tar.bz2
android_packages_apps_Trebuchet-6270a0ea18d27952fec20da04d64ca4f7e223849.zip
When dragging past first or last state, don't reinit target
Example bug: 1. Swipe up to overview and let go 2. Swipe all the way to the top of the screen, past where all apps stops 3. Swipe down Before this change, you get reset in NORMAL state instead of OVERVIEW. By ensuring that getTargetState() checks the drag direction before returning a new state, we guarantee we only re-init in the case that the state is actually changing. Otherwise it's possible to change the state to one that is impossible, such as NORMAL when swiping up from ALL APPS. Change-Id: I19913dded9c94228d06289780b6400e99403f378
-rw-r--r--quickstep/src/com/android/launcher3/uioverrides/LandscapeStatesTouchController.java5
-rw-r--r--quickstep/src/com/android/launcher3/uioverrides/PortraitStatesTouchController.java2
-rw-r--r--src/com/android/launcher3/touch/AbstractStateChangeTouchController.java4
-rw-r--r--src_ui_overrides/com/android/launcher3/uioverrides/AllAppsSwipeController.java7
4 files changed, 14 insertions, 4 deletions
diff --git a/quickstep/src/com/android/launcher3/uioverrides/LandscapeStatesTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/LandscapeStatesTouchController.java
index 355b88d91..30ceb43f9 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 1b65ca0b0..c92264f3a 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 9726704dd..3d85ac3c6 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 c97c3ccec..d1cddc18f 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