Merge "GridLayoutManager: fix scroll bug" into lmp-preview-dev
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/GridLayoutManager.java b/v17/leanback/src/android/support/v17/leanback/widget/GridLayoutManager.java
index 20fd687..91a96fa 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/GridLayoutManager.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/GridLayoutManager.java
@@ -1694,9 +1694,12 @@
         for (int i = mLastVisiblePos; i >= mFirstVisiblePos; i--) {
             StaggeredGrid.Location location = mGrid.getLocation(i);
             if (location != null && location.row == rowIndex) {
+                int savedMaxEdge = mWindowAlignment.mainAxis().getMaxEdge();
+                mWindowAlignment.mainAxis().setMaxEdge(maxEdge);
                 maxScroll = mWindowAlignment
                         .mainAxis().getSystemScrollPos(mScrollOffsetPrimary
                         + getViewCenter(findViewByPosition(i)));
+                mWindowAlignment.mainAxis().setMaxEdge(savedMaxEdge);
                 break;
             }
         }
@@ -1737,9 +1740,12 @@
         for (int i = mFirstVisiblePos; i <= mLastVisiblePos; i++) {
             StaggeredGrid.Location location = mGrid.getLocation(i);
             if (location != null && location.row == rowIndex) {
+                int savedMinEdge = mWindowAlignment.mainAxis().getMinEdge();
+                mWindowAlignment.mainAxis().setMinEdge(minEdge);
                 minScroll = mWindowAlignment
                         .mainAxis().getSystemScrollPos(mScrollOffsetPrimary
                         + getViewCenter(findViewByPosition(i)));
+                mWindowAlignment.mainAxis().setMinEdge(savedMinEdge);
                 break;
             }
         }
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/WindowAlignment.java b/v17/leanback/src/android/support/v17/leanback/widget/WindowAlignment.java
index 1affb68..e8073e8 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/WindowAlignment.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/WindowAlignment.java
@@ -109,6 +109,10 @@
             mMinEdge = minEdge;
         }
 
+        final public int getMinEdge() {
+            return mMinEdge;
+        }
+
         /** set minScroll,  Integer.MIN_VALUE means unknown*/
         final public void setMinScroll(int minScroll) {
             mMinScroll = minScroll;
@@ -128,6 +132,10 @@
             mMaxEdge = maxEdge;
         }
 
+        final public int getMaxEdge() {
+            return mMaxEdge;
+        }
+
         /** update max scroll,  Integer.MAX_VALUE means unknown*/
         final public void setMaxScroll(int maxScroll) {
             mMaxScroll = maxScroll;