When dragging between workspaces in rapid succession, the canceling of the
original long-press timer wasn't being triggered correctly. (When the timer
fires, it might read an invalid Workspace.allowLongPress() value.)
This patchset correctly cancels any pending long-press timers once a desktop
scroll begins, and we don't need to rely on the allowLongPress() value.
}
}
+ @Override
+ public void cancelLongPress() {
+ super.cancelLongPress();
+
+ // Cancel long press for all children
+ final int count = getChildCount();
+ for (int i = 0; i < count; i++) {
+ final View child = getChildAt(i);
+ child.cancelLongPress();
+ }
+ }
+
int getCountX() {
return mPortrait ? mShortAxisCells : mLongAxisCells;
}
mPendingCheckForLongPress.rememberWindowAttachCount();
postDelayed(mPendingCheckForLongPress, ViewConfiguration.getLongPressTimeout());
}
+
+ @Override
+ public void cancelLongPress() {
+ super.cancelLongPress();
+
+ mHasPerformedLongPress = false;
+ if (mPendingCheckForLongPress != null) {
+ removeCallbacks(mPendingCheckForLongPress);
+ }
+ }
}