manual merge due to conflicts

Change-Id: I9f18e1a426be7945c159262f79201832c3474a60
diff --git a/res/drawable-hdpi/focused_application_background.9.png b/res/drawable-hdpi/focused_application_background.9.png
index 7bf37ef..1b11492 100644
--- a/res/drawable-hdpi/focused_application_background.9.png
+++ b/res/drawable-hdpi/focused_application_background.9.png
Binary files differ
diff --git a/res/drawable-hdpi/pressed_application_background.9.png b/res/drawable-hdpi/pressed_application_background.9.png
index a6cbe94..ece27fd 100644
--- a/res/drawable-hdpi/pressed_application_background.9.png
+++ b/res/drawable-hdpi/pressed_application_background.9.png
Binary files differ
diff --git a/res/drawable-mdpi/focused_application_background.9.png b/res/drawable-mdpi/focused_application_background.9.png
index 9d09b41..b27d693 100644
--- a/res/drawable-mdpi/focused_application_background.9.png
+++ b/res/drawable-mdpi/focused_application_background.9.png
Binary files differ
diff --git a/res/drawable-mdpi/pressed_application_background.9.png b/res/drawable-mdpi/pressed_application_background.9.png
index b79536a..1fd727e 100644
--- a/res/drawable-mdpi/pressed_application_background.9.png
+++ b/res/drawable-mdpi/pressed_application_background.9.png
Binary files differ
diff --git a/res/drawable/pressed_application_background.9.png b/res/drawable/pressed_application_background.9.png
index b09f595..754af48 100644
--- a/res/drawable/pressed_application_background.9.png
+++ b/res/drawable/pressed_application_background.9.png
Binary files differ
diff --git a/res/layout-xlarge/all_apps_paged_view_application.xml b/res/layout-xlarge/all_apps_paged_view_application.xml
index 48b5712..a080bcec 100644
--- a/res/layout-xlarge/all_apps_paged_view_application.xml
+++ b/res/layout-xlarge/all_apps_paged_view_application.xml
@@ -28,4 +28,4 @@
     android:layout_height="match_parent"
     android:gravity="center_horizontal"
 
-    style="@style/WorkspaceIcon.Portrait" />
+    style="@style/WorkspaceIcon.AllApps" />
diff --git a/res/values-id/strings.xml b/res/values-in/strings.xml
similarity index 100%
rename from res/values-id/strings.xml
rename to res/values-in/strings.xml
diff --git a/res/values-he/strings.xml b/res/values-iw/strings.xml
similarity index 100%
rename from res/values-he/strings.xml
rename to res/values-iw/strings.xml
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 3305299..1e2dba2 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -49,6 +49,10 @@
         <item name="android:paddingRight">5dip</item>
     </style>
 
+    <style name="WorkspaceIcon.AllApps">
+        <item name="android:background">@null</item>
+    </style>
+
     <style name="WorkspaceIcon.Portrait">
         <item name="android:drawablePadding">5dip</item>
         <item name="android:paddingTop">4dip</item>
diff --git a/src/com/android/launcher2/BubbleTextView.java b/src/com/android/launcher2/BubbleTextView.java
index 89a6303..113f35d 100644
--- a/src/com/android/launcher2/BubbleTextView.java
+++ b/src/com/android/launcher2/BubbleTextView.java
@@ -26,7 +26,6 @@
 import android.graphics.drawable.Drawable;
 import android.text.Layout;
 import android.util.AttributeSet;
-import android.view.View.MeasureSpec;
 
 import com.android.launcher.R;
 
@@ -40,8 +39,6 @@
     static final float PADDING_H = 8.0f;
     static final float PADDING_V = 3.0f;
 
-    private int mAppCellWidth;
-
     private final RectF mRect = new RectF();
     private Paint mPaint;
     private float mBubbleColorAlpha;
@@ -78,7 +75,6 @@
         mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
         mPaint.setColor(bubbleColor);
         mBubbleColorAlpha = Color.alpha(bubbleColor) / 255.0f;
-        mAppCellWidth = (int) res.getDimension(R.dimen.app_icon_size);
 
         final float scale = res.getDisplayMetrics().density;
         mCornerRadius = CORNER_RADIUS * scale;
@@ -166,20 +162,6 @@
     }
 
     @Override
-    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
-        if (w > 0 && h > 0) {
-            // Temporary Workaround: We need to set padding to compress the text so that we can draw
-            // a hotdog around it.  Currently, the background images prevent us from applying the
-            // padding in XML, so we are doing this programmatically
-            int d = w - mAppCellWidth;
-            int pL = d - (d / 2);
-            int pR = d - pL;
-            setPadding(pL, getPaddingTop(), pR, getPaddingBottom());
-        }
-        super.onSizeChanged(w, h, oldw, oldh);
-    }
-
-    @Override
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
         if (mBackground != null) mBackground.setCallback(this);
diff --git a/src/com/android/launcher2/CacheableTextView.java b/src/com/android/launcher2/CacheableTextView.java
index eba29ec..50da7cd 100644
--- a/src/com/android/launcher2/CacheableTextView.java
+++ b/src/com/android/launcher2/CacheableTextView.java
@@ -18,9 +18,10 @@
 
 import android.content.Context;
 import android.graphics.Bitmap;
+import android.graphics.Bitmap.Config;
 import android.graphics.Canvas;
 import android.graphics.Paint;
-import android.graphics.Bitmap.Config;
+import android.graphics.Rect;
 import android.text.Layout;
 import android.util.AttributeSet;
 import android.widget.TextView;
@@ -66,7 +67,13 @@
     }
 
     public void buildAndEnableCache() {
-        if (getLayout() == null) {
+        // Defers building the cache until the next draw to allow measuring
+        // and laying out.
+        buildAndEnableCache(false);
+    }
+
+    public void buildAndEnableCache(boolean isImmediate) {
+        if (getLayout() == null || !isImmediate) {
             mWaitingToGenerateCache = true;
             return;
         }
@@ -94,8 +101,20 @@
         int height = (int) (textCacheBottom - mTextCacheTop);
 
         if (width != 0 && height != 0) {
-            mCache = Bitmap.createBitmap(width, height, Config.ARGB_8888);
-            mCacheCanvas.setBitmap(mCache);
+            if (mCache != null) {
+                if (mCache.getWidth() != width || mCache.getHeight() != height) {
+                    mCache.recycle();
+                    mCache = null;
+                }
+            }
+            if (mCache == null) {
+                mCache = Bitmap.createBitmap(width, height, Config.ARGB_8888);
+                mCacheCanvas.setBitmap(mCache);
+            } else {
+                mCacheCanvas.drawColor(0x00000000);
+            }
+
+            mCacheCanvas.save();
             mCacheCanvas.translate(-mTextCacheLeft, -mTextCacheTop);
 
             mIsBuildingCache = true;
@@ -103,6 +122,7 @@
             draw(mCacheCanvas);
             setAlpha(prevAlpha);
             mIsBuildingCache = false;
+            mCacheCanvas.restore();
 
             // A hack-- we set the text to be one space (we don't make it empty just to avoid any
             // potential issues with text measurement, like line height, etc.) so that the text view
@@ -114,10 +134,10 @@
 
     public void draw(Canvas canvas) {
         if (mWaitingToGenerateCache && !mIsBuildingCache) {
-            buildAndEnableCache();
+            buildAndEnableCache(true);
             mWaitingToGenerateCache = false;
         }
-        if (mCache != null) {
+        if (mCache != null && !mIsBuildingCache) {
             canvas.drawBitmap(mCache, mTextCacheLeft - mTextCacheScrollX + mScrollX,
                     mTextCacheTop, mCachePaint);
         }