Merge "Fix Tab click not updating the visible selected Tab" into lmp-mr1-ub-dev
diff --git a/design/src/android/support/design/widget/TabLayout.java b/design/src/android/support/design/widget/TabLayout.java
index 6e0153a..432f5f3 100755
--- a/design/src/android/support/design/widget/TabLayout.java
+++ b/design/src/android/support/design/widget/TabLayout.java
@@ -785,6 +785,10 @@
     }
 
     void selectTab(Tab tab) {
+        selectTab(tab, true);
+    }
+
+    void selectTab(Tab tab, boolean updateIndicator) {
         if (mSelectedTab == tab) {
             if (mSelectedTab != null) {
                 if (mOnTabSelectedListener != null) {
@@ -795,15 +799,15 @@
         } else {
             final int newPosition = tab != null ? tab.getPosition() : Tab.INVALID_POSITION;
             setSelectedTabView(newPosition);
-
-            if ((mSelectedTab == null || mSelectedTab.getPosition() == Tab.INVALID_POSITION)
-                    && newPosition != Tab.INVALID_POSITION) {
-                // If we don't currently have a tab, just draw the indicator
-                setScrollPosition(newPosition, 0f, true);
-            } else {
-                animateToTab(newPosition);
+            if (updateIndicator) {
+                if ((mSelectedTab == null || mSelectedTab.getPosition() == Tab.INVALID_POSITION)
+                        && newPosition != Tab.INVALID_POSITION) {
+                    // If we don't currently have a tab, just draw the indicator
+                    setScrollPosition(newPosition, 0f, true);
+                } else {
+                    animateToTab(newPosition);
+                }
             }
-
             if (mSelectedTab != null && mOnTabSelectedListener != null) {
                 mOnTabSelectedListener.onTabUnselected(mSelectedTab);
             }
@@ -1556,8 +1560,11 @@
         @Override
         public void onPageSelected(int position) {
             final TabLayout tabLayout = mTabLayoutRef.get();
-            if (mScrollState == SCROLL_STATE_IDLE && tabLayout != null) {
-                tabLayout.getTabAt(position).select();
+            if (tabLayout != null) {
+                // Select the tab, only updating the indicator if we're not being dragged/settled
+                // (since onPageScrolled will handle that).
+                tabLayout.selectTab(tabLayout.getTabAt(position),
+                        mScrollState == SCROLL_STATE_IDLE);
             }
         }
     }