Merge "fix SOX in clearFocus" into honeycomb
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7333f3f..e79ea58 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -906,6 +906,9 @@
     <!-- Access point for RLZ tracking. -->
     <string name="rlz_access_point">Y1</string>
 
+    <!-- Title for a dialog asking the user which account to sync their bookmarks to [CHAR LIMIT=32] -->
+    <string name="account_chooser_dialog_title" msgid="4833571985009544332">Choose account</string>
+
     <!-- Title for a dialog asking the user what they want to do with their bookmarks when adding a sync account [CHAR-LIMIT=32] -->
     <string name="import_bookmarks_dialog_title">Sync with Google account</string>
 
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index f20583a..7475237 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -394,6 +394,8 @@
         mCrumbs.setController(null);
         mCrumbs = null;
         getLoaderManager().destroyLoader(LOADER_BOOKMARKS);
+        mAdapter = null;
+        CombinedBookmarkHistoryView.getIconListenerSet().removeListener(this);
     }
 
     @Override
diff --git a/src/com/android/browser/TabScrollView.java b/src/com/android/browser/TabScrollView.java
index 09dddee..d0648b7 100644
--- a/src/com/android/browser/TabScrollView.java
+++ b/src/com/android/browser/TabScrollView.java
@@ -28,7 +28,6 @@
  */
 public class TabScrollView extends HorizontalScrollView {
 
-    private Context mContext;
     private LinearLayout mContentView;
     private int mSelected;
     private int mAnimationDuration;
@@ -62,13 +61,12 @@
     }
 
     private void init(Context ctx) {
-        mContext = ctx;
         mAnimationDuration = ctx.getResources().getInteger(
                 R.integer.tab_animation_duration);
         mTabOverlap = (int) ctx.getResources().getDimension(R.dimen.tab_overlap);
         setHorizontalScrollBarEnabled(false);
         setOverScrollMode(OVER_SCROLL_NEVER);
-        mContentView = new TabLayout(mContext);
+        mContentView = new TabLayout(ctx);
         mContentView.setOrientation(LinearLayout.HORIZONTAL);
         mContentView.setLayoutParams(
                 new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
@@ -189,6 +187,21 @@
         return getScrollX();
     }
 
+    @Override
+    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
+        super.onScrollChanged(l, t, oldl, oldt);
+
+        // TabViews base their drawing based on their absolute position within the
+        // window. When hardware accelerated, we need to recreate their display list
+        // when they scroll
+        if (isHardwareAccelerated()) {
+            int count = mContentView.getChildCount();
+            for (int i = 0; i < count; i++) {
+                mContentView.getChildAt(i).invalidate();
+            }
+        }
+    }
+
     class TabLayout extends LinearLayout {
 
         public TabLayout(Context context) {
diff --git a/src/com/android/browser/preferences/GeneralPreferencesFragment.java b/src/com/android/browser/preferences/GeneralPreferencesFragment.java
index 2735166..b6228dc 100644
--- a/src/com/android/browser/preferences/GeneralPreferencesFragment.java
+++ b/src/com/android/browser/preferences/GeneralPreferencesFragment.java
@@ -224,7 +224,7 @@
 
             mDialog = new AlertDialog.Builder(getActivity())
                     .setIcon(android.R.drawable.ic_dialog_alert)
-                    .setTitle("Choose account") // STOPSHIP localize
+                    .setTitle(R.string.account_chooser_dialog_title)
                     .setSingleChoiceItems(accountNames, curAccountOffset, this)
                     .create();
             return mDialog;