Fix issue with setting the current page immediately after a page is added

Change-Id: Ia9ddc42896b47b10bb98ed6bd6cece1b033207c1
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 8e8e6ed..32aed80 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -844,14 +844,9 @@
 
         mWorkspace.addView(customScreen, 0);
 
-        // We don't want to change the current or the default screen
-        mWorkspace.post(new Runnable() {
-            @Override
-            public void run() {
-                mWorkspace.incrementDefaultScreen();
-                mWorkspace.setCurrentPage(mWorkspace.getCurrentPage() + 1);
-            }
-        });
+        // Ensure that the current page and default page are maintained.
+        mWorkspace.incrementDefaultScreen();
+        mWorkspace.setCurrentPage(mWorkspace.getCurrentPage() + 1);
     }
 
     @Override
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java
index 8716a33..abf8bbd 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -89,6 +89,8 @@
     protected boolean mFirstLayout = true;
 
     protected int mCurrentPage;
+    protected int mChildCountOnLastMeasure;
+
     protected int mNextPage = INVALID_PAGE;
     protected int mMaxScrollX;
     protected Scroller mScroller;
@@ -347,7 +349,7 @@
             return;
         }
 
-
+        mForceScreenScrolled = true;
         mCurrentPage = Math.max(0, Math.min(currentPage, getPageCount() - 1));
         updateCurrentPageScroll();
         updateScrollingIndicator();
@@ -564,6 +566,11 @@
         // ensure that the cache is filled with good values.
         invalidateCachedOffsets();
 
+        if (mChildCountOnLastMeasure != getChildCount()) {
+            setCurrentPage(mCurrentPage);
+        }
+        mChildCountOnLastMeasure = getChildCount();
+
         if (childCount > 0) {
             if (DEBUG) Log.d(TAG, "getRelativeChildOffset(): " + getMeasuredWidth() + ", "
                     + getChildWidth(0));