Fixing some touch / interaction problems
-> Weird reorder/scroll mode hybrid (issue 10550801)
-> Entering overview mode when we shouldn't (issue 10855389)
Change-Id: Ic936ead8deb3a5d4e00f265d09329528a1517063
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 8f0fdde..5bb4f75 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -2557,11 +2557,14 @@
if (v instanceof Workspace) {
if (!mWorkspace.isInOverviewMode()) {
- mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
- HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
- mWorkspace.enterOverviewMode();
+ if (mWorkspace.enterOverviewMode()) {
+ mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
+ HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
+ return true;
+ } else {
+ return false;
+ }
}
- return true;
}
if (!(v instanceof CellLayout)) {
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java
index 1ae2943..42f3cac 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -1316,13 +1316,13 @@
*/
if (mActivePointerId != INVALID_POINTER) {
determineScrollingStart(ev);
- break;
}
// if mActivePointerId is INVALID_POINTER, then we must have missed an ACTION_DOWN
// event. in that case, treat the first occurence of a move event as a ACTION_DOWN
// i.e. fall through to the next case (don't break)
// (We sometimes miss ACTION_DOWN events in Workspace because it ignores all events
// while it's small- this was causing a crash before we checked for INVALID_POINTER)
+ break;
}
case MotionEvent.ACTION_DOWN: {
@@ -2373,7 +2373,10 @@
}
public boolean startReordering(View v) {
- int dragViewIndex = indexOfChild(v);//getPageNearestToCenterOfScreen();
+ int dragViewIndex = indexOfChild(v);
+
+ if (mTouchState != TOUCH_STATE_REST) return false;
+
mTempVisiblePagesRange[0] = 0;
mTempVisiblePagesRange[1] = getPageCount() - 1;
getOverviewModePages(mTempVisiblePagesRange);
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index ada41a0..dcf1069 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -1781,9 +1781,13 @@
return mState == State.OVERVIEW;
}
- public void enterOverviewMode() {
+ public boolean enterOverviewMode() {
+ if (mTouchState != TOUCH_STATE_REST) {
+ return false;
+ }
mLauncher.onInteractionBegin();
enableOverviewMode(true, -1, true);
+ return true;
}
public void exitOverviewMode(boolean animated) {