From 674531f26196502db825838b21b9cbf34463088c Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Fri, 13 Dec 2013 15:07:14 -0800 Subject: [PATCH] Don't notifyPageSwitchListener until page settles (issue 12069757) -> Should address the dismiss timer not working quite right Change-Id: I63ad32d8f7c37f1a090ff1dd6024eeb7c0c6ce65 --- src/com/android/launcher3/PagedView.java | 17 +++++++++++++++-- src/com/android/launcher3/Workspace.java | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index 1e4f4fa7f6..fa52f52b10 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -451,6 +451,10 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc return new PageIndicator.PageMarkerResources(); } + /** + * Add a page change listener which will be called when a page is _finished_ listening. + * + */ public void setPageSwitchListener(PageSwitchListener pageSwitchListener) { mPageSwitchListener = pageSwitchListener; if (mPageSwitchListener != null) { @@ -525,6 +529,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc */ void stopScrolling() { mCurrentPage = getNextPage(); + notifyPageSwitchListener(); forceFinishScroller(); } @@ -574,11 +579,19 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc return mRestorePage; } + /** + * Should be called whenever the page changes. In the case of a scroll, we wait until the page + * has settled. + */ protected void notifyPageSwitchListener() { if (mPageSwitchListener != null) { - mPageSwitchListener.onPageSwitch(getPageAt(mCurrentPage), mCurrentPage); + mPageSwitchListener.onPageSwitch(getPageAt(getNextPage()), getNextPage()); } + updatePageIndicator(); + } + + private void updatePageIndicator() { // Update the page indicator (when we aren't reordering) if (mPageIndicator != null && !isReordering(false)) { mPageIndicator.setActiveMarker(getNextPage()); @@ -2232,7 +2245,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc mScroller.startScroll(mUnboundedScrollX, 0, delta, 0, duration); - notifyPageSwitchListener(); + updatePageIndicator(); // Trigger a compute() to finish switching pages if necessary if (immediate) { diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 52420b73b9..6b719b2582 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -1209,7 +1209,7 @@ public class Workspace extends SmoothPagedView @Override protected void notifyPageSwitchListener() { super.notifyPageSwitchListener(); - Launcher.setScreen(mCurrentPage); + Launcher.setScreen(getNextPage()); if (hasCustomContent() && getNextPage() == 0 && !mCustomContentShowing) { mCustomContentShowing = true;