Fixing two critical bugs in all apps transition controller
bug#1: if long press from page indicator region, you can pull up all apps
even though the workspace is in overview state.
bug#2: all apps should not intercept touch not only in overview mode
but also in any modal state.
Change-Id: I91c0a181f037f6c2465a983825da3a2da7e2920f
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 81c95e7..1caec33 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -3235,7 +3235,6 @@
mWorkspace.startReordering(v);
} else {
showOverviewMode(true);
- mHotseat.requestDisallowInterceptTouchEvent(true);
}
} else {
final boolean isAllAppsButton =
@@ -3386,6 +3385,9 @@
mStateTransitionAnimation.startAnimationToWorkspace(mState, mWorkspace.getState(),
Workspace.State.OVERVIEW, animated, postAnimRunnable);
mState = State.WORKSPACE;
+ // If animated from long press, then don't allow any of the controller in the drag
+ // layer to intercept any remaining touch.
+ mWorkspace.requestDisallowInterceptTouchEvent(animated);
}
/**
diff --git a/src/com/android/launcher3/allapps/AllAppsTransitionController.java b/src/com/android/launcher3/allapps/AllAppsTransitionController.java
index 5888230..41d6393 100644
--- a/src/com/android/launcher3/allapps/AllAppsTransitionController.java
+++ b/src/com/android/launcher3/allapps/AllAppsTransitionController.java
@@ -108,7 +108,7 @@
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
mNoIntercept = false;
- if (mLauncher.getWorkspace().isInOverviewMode() || mLauncher.isWidgetsViewVisible()) {
+ if (!mLauncher.isAllAppsVisible() && mLauncher.getWorkspace().workspaceInModalState()) {
mNoIntercept = true;
} else if (mLauncher.isAllAppsVisible() &&
!mAppsView.shouldContainerScroll(ev)) {
@@ -159,9 +159,8 @@
return true;
}
} else {
- if ((mLauncher.getDragLayer().isEventOverHotseat(ev)
- || mLauncher.getDragLayer().isEventOverPageIndicator(ev))
- && !grid.isVerticalBarLayout()) {
+ if (mLauncher.getDragLayer().isEventOverHotseat(ev) ||
+ mLauncher.getDragLayer().isEventOverPageIndicator(ev)) {
return true;
}
}