Merge "Waiting until post draw before calling finish on the recent transition" into ub-launcher3-master
diff --git a/quickstep/src/com/android/quickstep/QuickScrubController.java b/quickstep/src/com/android/quickstep/QuickScrubController.java
index fd089b5..ea9d009 100644
--- a/quickstep/src/com/android/quickstep/QuickScrubController.java
+++ b/quickstep/src/com/android/quickstep/QuickScrubController.java
@@ -138,17 +138,26 @@
}
public void snapToNextTaskIfAvailable() {
- if (!mStartedFromHome && mInQuickScrub && mRecentsView.getChildCount() > 0) {
- mRecentsView.snapToPage(mRecentsView.getNextPage() + 1, QUICK_SCRUB_START_DURATION);
+ if (mInQuickScrub && mRecentsView.getChildCount() > 0) {
+ int pageToGoTo = mStartedFromHome ? 0 : mRecentsView.getNextPage() + 1;
+ goToPageWithHaptic(pageToGoTo, QUICK_SCRUB_START_DURATION, true /* forceHaptic */);
}
}
private void goToPageWithHaptic(int pageToGoTo) {
+ goToPageWithHaptic(pageToGoTo, -1 /* overrideDuration */, false /* forceHaptic */);
+ }
+
+ private void goToPageWithHaptic(int pageToGoTo, int overrideDuration, boolean forceHaptic) {
pageToGoTo = Utilities.boundToRange(pageToGoTo, 0, mRecentsView.getPageCount() - 1);
- if (pageToGoTo != mRecentsView.getNextPage()) {
- int duration = Math.abs(pageToGoTo - mRecentsView.getNextPage())
+ boolean snappingToPage = pageToGoTo != mRecentsView.getNextPage();
+ if (snappingToPage) {
+ int duration = overrideDuration > -1 ? overrideDuration
+ : Math.abs(pageToGoTo - mRecentsView.getNextPage())
* QUICKSCRUB_SNAP_DURATION_PER_PAGE;
mRecentsView.snapToPage(pageToGoTo, duration);
+ }
+ if (snappingToPage || forceHaptic) {
mRecentsView.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY,
HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
}
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java
index 15bf76d..9da5cf0 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -695,7 +695,11 @@
public boolean requestChildRectangleOnScreen(View child, Rect rectangle, boolean immediate) {
int page = indexToPage(indexOfChild(child));
if (page != mCurrentPage || !mScroller.isFinished()) {
- snapToPage(page);
+ if (immediate) {
+ setCurrentPage(page);
+ } else {
+ snapToPage(page);
+ }
return true;
}
return false;