Fixing issue where the page was reset to 0 on rotation.

- We needed to defer setting the restore page until the first onLayout

Change-Id: I6b7b4c0a6401ab6ab2caaea0dac0a7261ff831e8
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 3592045..321c4e7 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -990,7 +990,7 @@
 
         int currentScreen = savedState.getInt(RUNTIME_STATE_CURRENT_SCREEN, -1);
         if (currentScreen > -1) {
-            mWorkspace.setCurrentPage(currentScreen);
+            mWorkspace.setRestorePage(currentScreen);
         }
 
         final long pendingAddContainer = savedState.getLong(RUNTIME_STATE_PENDING_ADD_CONTAINER, -1);
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java
index aaff588..ed88ea9 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -104,6 +104,7 @@
     protected boolean mFirstLayout = true;
 
     protected int mCurrentPage;
+    protected int mRestorePage = -1;
     protected int mChildCountOnLastLayout;
 
     protected int mNextPage = INVALID_PAGE;
@@ -506,6 +507,14 @@
         invalidate();
     }
 
+    /**
+     * The restore page will be set in place of the current page at the next (likely first)
+     * layout.
+     */
+    void setRestorePage(int restorePage) {
+        mRestorePage = restorePage;
+    }
+
     protected void notifyPageSwitchListener() {
         if (mPageSwitchListener != null) {
             mPageSwitchListener.onPageSwitch(getPageAt(mCurrentPage), mCurrentPage);
@@ -870,7 +879,12 @@
 
         if (mScroller.isFinished() && mChildCountOnLastLayout != getChildCount() &&
                 !mDeferringForDelete) {
-            setCurrentPage(getNextPage());
+            if (mRestorePage > -1) {
+                setCurrentPage(mRestorePage);
+                mRestorePage = -1;
+            } else {
+                setCurrentPage(getNextPage());
+            }
         }
         mChildCountOnLastLayout = getChildCount();
     }