Merge "Various custom flow fixes." into ub-launcher3-qt-dev
diff --git a/src/com/android/customization/widget/PreviewPager.java b/src/com/android/customization/widget/PreviewPager.java
index c80396d..9ce9d90 100644
--- a/src/com/android/customization/widget/PreviewPager.java
+++ b/src/com/android/customization/widget/PreviewPager.java
@@ -151,18 +151,14 @@
      * widget.
      */
     public void setAdapter(PagerAdapter adapter) {
+        int initialPage = 0;
+        if (mViewPager.getAdapter() != null) {
+            initialPage = isRtl() ? mAdapter.getCount() - 1 - mViewPager.getCurrentItem()
+                    : mViewPager.getCurrentItem();
+        }
         mAdapter = adapter;
         mViewPager.setAdapter(adapter);
-        if (ViewCompat.isLayoutDirectionResolved(mViewPager)) {
-            if (ViewCompat.getLayoutDirection(mViewPager) == ViewCompat.LAYOUT_DIRECTION_RTL) {
-                mViewPager.setCurrentItem(mAdapter.getCount() - 1);
-            }
-        } else {
-            if (TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault())
-                    == ViewCompat.LAYOUT_DIRECTION_RTL) {
-                mViewPager.setCurrentItem(mAdapter.getCount() - 1);
-            }
-        }
+        mViewPager.setCurrentItem(isRtl() ? mAdapter.getCount() - 1 - initialPage : initialPage);
         mAdapter.registerDataSetObserver(new DataSetObserver() {
             @Override
             public void onChanged() {
@@ -173,6 +169,14 @@
         updateIndicator(mViewPager.getCurrentItem());
     }
 
+    private boolean isRtl() {
+        if (ViewCompat.isLayoutDirectionResolved(mViewPager)) {
+            return ViewCompat.getLayoutDirection(mViewPager) == ViewCompat.LAYOUT_DIRECTION_RTL;
+        }
+        return TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault())
+                == ViewCompat.LAYOUT_DIRECTION_RTL;
+    }
+
     /**
      * Set a {@link OnPageChangeListener} to be notified when the ViewPager's page state changes
      */