OSDN Git Service

Don't notifyPageSwitchListener until page settles (issue 12069757)
authorAdam Cohen <adamcohen@google.com>
Fri, 13 Dec 2013 23:07:14 +0000 (15:07 -0800)
committerAdam Cohen <adamcohen@google.com>
Fri, 13 Dec 2013 23:59:01 +0000 (15:59 -0800)
-> Should address the dismiss timer not working quite right

Change-Id: I63ad32d8f7c37f1a090ff1dd6024eeb7c0c6ce65

src/com/android/launcher3/PagedView.java
src/com/android/launcher3/Workspace.java

index 1e4f4fa..fa52f52 100644 (file)
@@ -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) {
index 52420b7..6b719b2 100644 (file)
@@ -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;