Merge "Adding scroll disambiguation between Workspace and AppWidgets" into honeycomb
diff --git a/res/drawable-xlarge-nodpi/city.jpg b/res/drawable-xlarge-nodpi/city.jpg
new file mode 100644
index 0000000..983678e
--- /dev/null
+++ b/res/drawable-xlarge-nodpi/city.jpg
Binary files differ
diff --git a/res/drawable-xlarge-nodpi/city_small.jpg b/res/drawable-xlarge-nodpi/city_small.jpg
new file mode 100644
index 0000000..e267750
--- /dev/null
+++ b/res/drawable-xlarge-nodpi/city_small.jpg
Binary files differ
diff --git a/res/drawable-xlarge-nodpi/city_wallpaper.jpg b/res/drawable-xlarge-nodpi/city_wallpaper.jpg
deleted file mode 100644
index 8d3035e..0000000
--- a/res/drawable-xlarge-nodpi/city_wallpaper.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xlarge-nodpi/city_wallpaper_small.png b/res/drawable-xlarge-nodpi/city_wallpaper_small.png
deleted file mode 100644
index 36d6d74..0000000
--- a/res/drawable-xlarge-nodpi/city_wallpaper_small.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xlarge-nodpi/flowerbot.jpg b/res/drawable-xlarge-nodpi/flowerbot.jpg
new file mode 100644
index 0000000..7adb3d2
--- /dev/null
+++ b/res/drawable-xlarge-nodpi/flowerbot.jpg
Binary files differ
diff --git a/res/drawable-xlarge-nodpi/flowerbot_small.jpg b/res/drawable-xlarge-nodpi/flowerbot_small.jpg
new file mode 100644
index 0000000..54778b9
--- /dev/null
+++ b/res/drawable-xlarge-nodpi/flowerbot_small.jpg
Binary files differ
diff --git a/res/drawable-xlarge-nodpi/geonova.jpg b/res/drawable-xlarge-nodpi/geonova.jpg
deleted file mode 100755
index f9a37cc..0000000
--- a/res/drawable-xlarge-nodpi/geonova.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xlarge-nodpi/geonova_small.jpg b/res/drawable-xlarge-nodpi/geonova_small.jpg
deleted file mode 100755
index 2b6a503..0000000
--- a/res/drawable-xlarge-nodpi/geonova_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xlarge-nodpi/glow_wallpaper.png b/res/drawable-xlarge-nodpi/glow_wallpaper.png
deleted file mode 100644
index eb29449..0000000
--- a/res/drawable-xlarge-nodpi/glow_wallpaper.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xlarge-nodpi/glow_wallpaper_small.png b/res/drawable-xlarge-nodpi/glow_wallpaper_small.png
deleted file mode 100644
index f83fc60..0000000
--- a/res/drawable-xlarge-nodpi/glow_wallpaper_small.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xlarge-nodpi/glowy_hex.jpg b/res/drawable-xlarge-nodpi/glowy_hex.jpg
new file mode 100644
index 0000000..8729fe1
--- /dev/null
+++ b/res/drawable-xlarge-nodpi/glowy_hex.jpg
Binary files differ
diff --git a/res/drawable-xlarge-nodpi/glowy_hex_small.jpg b/res/drawable-xlarge-nodpi/glowy_hex_small.jpg
new file mode 100644
index 0000000..6ac58bd
--- /dev/null
+++ b/res/drawable-xlarge-nodpi/glowy_hex_small.jpg
Binary files differ
diff --git a/res/drawable-xlarge-nodpi/lineofbots.jpg b/res/drawable-xlarge-nodpi/lineofbots.jpg
deleted file mode 100755
index c9f5c79..0000000
--- a/res/drawable-xlarge-nodpi/lineofbots.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xlarge-nodpi/lineofbots_small.jpg b/res/drawable-xlarge-nodpi/lineofbots_small.jpg
deleted file mode 100755
index ecb3942..0000000
--- a/res/drawable-xlarge-nodpi/lineofbots_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xlarge-nodpi/village.jpg b/res/drawable-xlarge-nodpi/village.jpg
new file mode 100644
index 0000000..480a07c
--- /dev/null
+++ b/res/drawable-xlarge-nodpi/village.jpg
Binary files differ
diff --git a/res/drawable-xlarge-nodpi/village_small.jpg b/res/drawable-xlarge-nodpi/village_small.jpg
new file mode 100644
index 0000000..8659904
--- /dev/null
+++ b/res/drawable-xlarge-nodpi/village_small.jpg
Binary files differ
diff --git a/res/values-xlarge/wallpapers.xml b/res/values-xlarge/wallpapers.xml
index 04e3d66..85bb433 100644
--- a/res/values-xlarge/wallpapers.xml
+++ b/res/values-xlarge/wallpapers.xml
@@ -19,10 +19,12 @@
     <string-array name="wallpapers" translatable="false">
 	<item>bluecrystal</item>
 	<item>bluelinebots</item>
+	<item>glowy_hex</item>
 	<item>bots</item>
+	<item>flowerbot</item>
 	<item>bucky</item>
-	<item>geonova</item>
-        <item>city_wallpaper</item>
 	<item>lotus</item>
+	<item>city</item>
+	<item>village</item>
     </string-array>
 </resources>
diff --git a/src/com/android/launcher2/BubbleTextView.java b/src/com/android/launcher2/BubbleTextView.java
index f3aa342..d02f597 100644
--- a/src/com/android/launcher2/BubbleTextView.java
+++ b/src/com/android/launcher2/BubbleTextView.java
@@ -31,13 +31,14 @@
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
+import android.widget.TextView;
 
 /**
  * TextView that draws a bubble behind the text. We cannot use a LineBackgroundSpan
  * because we want to make the bubble taller than the text and TextView's clip is
  * too aggressive.
  */
-public class BubbleTextView extends CachedTextView implements VisibilityChangedBroadcaster {
+public class BubbleTextView extends TextView implements VisibilityChangedBroadcaster {
     static final float CORNER_RADIUS = 4.0f;
     static final float SHADOW_LARGE_RADIUS = 4.0f;
     static final float SHADOW_SMALL_RADIUS = 1.75f;
@@ -96,19 +97,8 @@
         mFocusedGlowColor = res.getColor(R.color.workspace_item_focused_glow_color);
         mPressedOutlineColor = res.getColor(R.color.workspace_item_pressed_outline_color);
         mPressedGlowColor = res.getColor(R.color.workspace_item_pressed_glow_color);
-    }
 
-    protected int getCacheTopPadding() {
-        return (int) PADDING_V;
-    }
-    protected int getCacheBottomPadding() {
-        return (int) (PADDING_V + SHADOW_LARGE_RADIUS + SHADOW_Y_OFFSET);
-    }
-    protected int getCacheLeftPadding() {
-        return (int) (PADDING_H + SHADOW_LARGE_RADIUS);
-    }
-    protected int getCacheRightPadding() {
-        return (int) (PADDING_H + SHADOW_LARGE_RADIUS);
+        setShadowLayer(SHADOW_LARGE_RADIUS, 0.0f, SHADOW_Y_OFFSET, SHADOW_LARGE_COLOUR);
     }
 
     public void applyFromShortcutInfo(ShortcutInfo info, IconCache iconCache) {
@@ -269,33 +259,34 @@
                     mScrollX - padding, mScrollY - padding, mTempPaint);
             canvas.restore();
         }
-        if (isBuildingCache()) {
-            // We enhance the shadow by drawing the shadow twice
-            this.setShadowLayer(SHADOW_LARGE_RADIUS, 0.0f, SHADOW_Y_OFFSET, SHADOW_LARGE_COLOUR);
-            super.draw(canvas);
-            this.setShadowLayer(SHADOW_SMALL_RADIUS, 0.0f, 0.0f, SHADOW_SMALL_COLOUR);
-            super.draw(canvas);
-        } else {
-            final Drawable background = mBackground;
-            if (background != null) {
-                final int scrollX = mScrollX;
-                final int scrollY = mScrollY;
 
-                if (mBackgroundSizeChanged) {
-                    background.setBounds(0, 0,  mRight - mLeft, mBottom - mTop);
-                    mBackgroundSizeChanged = false;
-                }
+        final Drawable background = mBackground;
+        if (background != null) {
+            final int scrollX = mScrollX;
+            final int scrollY = mScrollY;
 
-                if ((scrollX | scrollY) == 0) {
-                    background.draw(canvas);
-                } else {
-                    canvas.translate(scrollX, scrollY);
-                    background.draw(canvas);
-                    canvas.translate(-scrollX, -scrollY);
-                }
+            if (mBackgroundSizeChanged) {
+                background.setBounds(0, 0,  mRight - mLeft, mBottom - mTop);
+                mBackgroundSizeChanged = false;
             }
-            super.draw(canvas);
+
+            if ((scrollX | scrollY) == 0) {
+                background.draw(canvas);
+            } else {
+                canvas.translate(scrollX, scrollY);
+                background.draw(canvas);
+                canvas.translate(-scrollX, -scrollY);
+            }
         }
+        // We enhance the shadow by drawing the shadow twice
+        getPaint().setShadowLayer(SHADOW_LARGE_RADIUS, 0.0f, SHADOW_Y_OFFSET, SHADOW_LARGE_COLOUR);
+        super.draw(canvas);
+        canvas.save(Canvas.CLIP_SAVE_FLAG);
+        canvas.clipRect(mScrollX, mScrollY + getExtendedPaddingTop(), mScrollX + getWidth(),
+                mScrollY + getHeight(), Region.Op.REPLACE);
+        getPaint().setShadowLayer(SHADOW_SMALL_RADIUS, 0.0f, 0.0f, SHADOW_SMALL_COLOUR);
+        super.draw(canvas);
+        canvas.restore();
     }
 
     @Override
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index 6767cf1..b27770c 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -50,7 +50,7 @@
 
 import java.util.Arrays;
 
-public class CellLayout extends CachedViewGroup {
+public class CellLayout extends ViewGroup {
     static final String TAG = "CellLayout";
 
     private int mCellWidth;
diff --git a/src/com/android/launcher2/CellLayoutChildren.java b/src/com/android/launcher2/CellLayoutChildren.java
index a6f7f42..76a6900 100644
--- a/src/com/android/launcher2/CellLayoutChildren.java
+++ b/src/com/android/launcher2/CellLayoutChildren.java
@@ -44,6 +44,7 @@
     public CellLayoutChildren(Context context) {
         super(context);
         mWallpaperManager = WallpaperManager.getInstance(context);
+        setLayerType(LAYER_TYPE_HARDWARE, null);
     }
 
     public void setCellDimensions(int cellWidth, int cellHeight,
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index f17a6e2..2800b02 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -288,7 +288,6 @@
             @Override
             public void onAnimationStart(Animator animation) {
                 mIsInUnshrinkAnimation = true;
-                disableCacheUpdates();
             }
 
             @Override
@@ -306,19 +305,13 @@
                     mDrawCustomizeTrayBackground = false;
                 }
                 mWallpaperOffset.setOverrideHorizontalCatchupConstant(false);
-                enableCacheUpdates();
                 mAnimator = null;
             }
         };
         mShrinkAnimationListener = new AnimatorListenerAdapter() {
             @Override
-            public void onAnimationStart(Animator animation) {
-                disableCacheUpdates();
-            }
-            @Override
             public void onAnimationEnd(Animator animation) {
                 mWallpaperOffset.setOverrideHorizontalCatchupConstant(false);
-                enableCacheUpdates();
                 mAnimator = null;
             }
         };
@@ -1078,22 +1071,6 @@
         }
     }
 
-    public void enableCacheUpdates() {
-        final int pageCount = getChildCount();
-        for (int i = 0; i < pageCount; i++) {
-            final CellLayout page = (CellLayout) getChildAt(i);
-            page.enableCacheUpdates();
-        }
-    }
-
-    public void disableCacheUpdates() {
-        final int pageCount = getChildCount();
-        for (int i = 0; i < pageCount; i++) {
-            final CellLayout page = (CellLayout) getChildAt(i);
-            page.disableCacheUpdates();
-        }
-    }
-
     @Override
     protected void onDraw(Canvas canvas) {
         updateWallpaperOffsets();