Merge "fix tab switching animation bug" into honeycomb-mr1
diff --git a/src/com/android/browser/ScrollWebView.java b/src/com/android/browser/ScrollWebView.java
index d1dc25b..2ee2ac0 100644
--- a/src/com/android/browser/ScrollWebView.java
+++ b/src/com/android/browser/ScrollWebView.java
@@ -151,14 +151,15 @@
     }
 
     void setDrawCached(boolean cached) {
+        if (cached == mDrawCached) return;
         if (cached) {
             buildDrawingCache();
             mBitmap = getDrawingCache(false);
             mDrawCached = (mBitmap != null);
         } else {
+            mDrawCached = false;
             mBitmap = null;
             destroyDrawingCache();
-            mDrawCached = false;
         }
     }
 
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index 33151f7..371e649 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -51,6 +51,7 @@
 
     private boolean mUseQuickControls;
     private PieControl mPieControl;
+    private boolean mInAnimation = false;
 
     /**
      * @param browser
@@ -210,7 +211,9 @@
 
     @Override
     public void setActiveTab(final Tab tab) {
+        if (mInAnimation) return;
         if ((tab != mActiveTab) && (mActiveTab != null)) {
+            mInAnimation = true;
             // animate between the two
             final ScrollWebView fromWV = (ScrollWebView) mActiveTab.getWebView();
             fromWV.setDrawCached(true);
@@ -234,6 +237,7 @@
                     fromWV.setDrawCached(false);
                     toWV.setDrawCached(false);
                     setActiveTab(tab, false);
+                    mInAnimation = false;
                 }
 
                 @Override
@@ -241,6 +245,7 @@
                     fromWV.setDrawCached(false);
                     toWV.setDrawCached(false);
                     setActiveTab(tab, false);
+                    mInAnimation = false;
                 }
 
                 @Override