Merge "Fixing issue where default widget previews were not using large icons on tablet." into ics-mr1
diff --git a/res/drawable-hdpi/homescreen_small_blue.9.png b/res/drawable-hdpi/flying_icon_bg_pressed.9.png
similarity index 100%
rename from res/drawable-hdpi/homescreen_small_blue.9.png
rename to res/drawable-hdpi/flying_icon_bg_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi/homescreen_small_blue_strong.9.png b/res/drawable-hdpi/homescreen_small_blue_strong.9.png
deleted file mode 100644
index 6eab8f2..0000000
--- a/res/drawable-hdpi/homescreen_small_blue_strong.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/homescreen_small_blue.9.png b/res/drawable-mdpi/flying_icon_bg_pressed.9.png
similarity index 100%
rename from res/drawable-mdpi/homescreen_small_blue.9.png
rename to res/drawable-mdpi/flying_icon_bg_pressed.9.png
Binary files differ
diff --git a/res/drawable-mdpi/homescreen_small_blue_strong.9.png b/res/drawable-mdpi/homescreen_small_blue_strong.9.png
deleted file mode 100644
index 79d84a4..0000000
--- a/res/drawable-mdpi/homescreen_small_blue_strong.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/homescreen_small_blue.9.png b/res/drawable-xhdpi/flying_icon_bg_pressed.9.png
similarity index 100%
rename from res/drawable-xhdpi/homescreen_small_blue.9.png
rename to res/drawable-xhdpi/flying_icon_bg_pressed.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/homescreen_small_blue_strong.9.png b/res/drawable-xhdpi/homescreen_small_blue_strong.9.png
deleted file mode 100644
index 696d907..0000000
--- a/res/drawable-xhdpi/homescreen_small_blue_strong.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/flying_icon_bg.xml b/res/drawable/flying_icon_bg.xml
index 6f5bf0b..167c3ba 100644
--- a/res/drawable/flying_icon_bg.xml
+++ b/res/drawable/flying_icon_bg.xml
@@ -15,6 +15,6 @@
 -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_pressed="true" android:drawable="@drawable/homescreen_small_blue" />
+    <item android:state_pressed="true" android:drawable="@drawable/flying_icon_bg_pressed" />
     <item android:drawable="@android:color/transparent" />
 </selector>
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index 54fdcc5..9ffc1d0 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -96,12 +96,7 @@
     private float mBackgroundAlphaMultiplier = 1.0f;
 
     private Drawable mNormalBackground;
-    private Drawable mActiveBackground;
     private Drawable mActiveGlowBackground;
-    private Drawable mNormalBackgroundMini;
-    private Drawable mNormalGlowBackgroundMini;
-    private Drawable mActiveBackgroundMini;
-    private Drawable mActiveGlowBackgroundMini;
     private Drawable mOverScrollForegroundDrawable;
     private Drawable mOverScrollLeft;
     private Drawable mOverScrollRight;
@@ -112,11 +107,8 @@
     private float mGlowBackgroundAlpha;
     private int mForegroundPadding;
 
-    private boolean mAcceptsDrops = true;
     // If we're actively dragging something over this screen, mIsDragOverlapping is true
     private boolean mIsDragOverlapping = false;
-    private boolean mIsDragOccuring = false;
-    private boolean mIsDefaultDropTarget = false;
     private final Point mDragCenter = new Point();
 
     // These arrays are used to implement the drag visualization on x-large screens.
@@ -182,25 +174,15 @@
         final Resources res = getResources();
 
         mNormalBackground = res.getDrawable(R.drawable.homescreen_blue_normal_holo);
-        mActiveBackground = res.getDrawable(R.drawable.homescreen_blue_strong_holo);
         mActiveGlowBackground = res.getDrawable(R.drawable.homescreen_blue_strong_holo);
 
-        mNormalBackgroundMini = res.getDrawable(R.drawable.homescreen_small_blue);
-        mNormalGlowBackgroundMini = res.getDrawable(R.drawable.homescreen_small_blue_strong);
-        mActiveBackgroundMini = res.getDrawable(R.drawable.homescreen_small_blue_strong);
-        mActiveGlowBackgroundMini = res.getDrawable(R.drawable.homescreen_small_blue_strong);
         mOverScrollLeft = res.getDrawable(R.drawable.overscroll_glow_left);
         mOverScrollRight = res.getDrawable(R.drawable.overscroll_glow_right);
         mForegroundPadding =
                 res.getDimensionPixelSize(R.dimen.workspace_overscroll_drawable_padding);
 
         mNormalBackground.setFilterBitmap(true);
-        mActiveBackground.setFilterBitmap(true);
         mActiveGlowBackground.setFilterBitmap(true);
-        mNormalBackgroundMini.setFilterBitmap(true);
-        mNormalGlowBackgroundMini.setFilterBitmap(true);
-        mActiveBackgroundMini.setFilterBitmap(true);
-        mActiveGlowBackgroundMini.setFilterBitmap(true);
 
         // Initialize the data structures used for the drag visualization.
 
@@ -358,20 +340,6 @@
         return null;
     }
 
-    public void setIsDefaultDropTarget(boolean isDefaultDropTarget) {
-        if (mIsDefaultDropTarget != isDefaultDropTarget) {
-            mIsDefaultDropTarget = isDefaultDropTarget;
-            invalidate();
-        }
-    }
-
-    void setIsDragOccuring(boolean isDragOccuring) {
-        if (mIsDragOccuring != isDragOccuring) {
-            mIsDragOccuring = isDragOccuring;
-            invalidate();
-        }
-    }
-
     void setIsDragOverlapping(boolean isDragOverlapping) {
         if (mIsDragOverlapping != isDragOverlapping) {
             mIsDragOverlapping = isDragOverlapping;
@@ -454,47 +422,17 @@
         // backgrounds
         if (mBackgroundAlpha > 0.0f) {
             Drawable bg;
-            boolean mini = getScaleX() < 0.5f;
 
             if (mIsDragOverlapping) {
                 // In the mini case, we draw the active_glow bg *over* the active background
-                bg = mini ? mActiveBackgroundMini : mActiveGlowBackground;
-            } else if (mIsDragOccuring && mAcceptsDrops) {
-                bg = mini ? mActiveBackgroundMini : mActiveBackground;
-            } else if (mIsDefaultDropTarget && mini) {
-                bg = mNormalGlowBackgroundMini;
+                bg = mActiveGlowBackground;
             } else {
-                bg = mini ? mNormalBackgroundMini : mNormalBackground;
+                bg = mNormalBackground;
             }
 
             bg.setAlpha((int) (mBackgroundAlpha * mBackgroundAlphaMultiplier * 255));
             bg.setBounds(mBackgroundRect);
             bg.draw(canvas);
-
-            if (mini && mIsDragOverlapping) {
-                boolean modifiedClipRect = false;
-                if (mGlowBackgroundScale > 1.0f) {
-                    // If the hover background's scale is greater than 1, we'll be drawing outside
-                    // the bounds of this CellLayout. Get around that by temporarily increasing the
-                    // size of the clip rect
-                    float marginFraction = (mGlowBackgroundScale - 1.0f) / 2.0f;
-                    Rect clipRect = canvas.getClipBounds();
-                    int marginX = (int) (marginFraction * (clipRect.right - clipRect.left));
-                    int marginY = (int) (marginFraction * (clipRect.bottom - clipRect.top));
-                    canvas.save(Canvas.CLIP_SAVE_FLAG);
-                    canvas.clipRect(-marginX, -marginY,
-                            getWidth() + marginX, getHeight() + marginY, Region.Op.REPLACE);
-                    modifiedClipRect = true;
-                }
-
-                mActiveGlowBackgroundMini.setAlpha(
-                        (int) (mBackgroundAlpha * mGlowBackgroundAlpha * 255));
-                mActiveGlowBackgroundMini.setBounds(mGlowBackgroundRect);
-                mActiveGlowBackgroundMini.draw(canvas);
-                if (modifiedClipRect) {
-                    canvas.restore();
-                }
-            }
         }
 
         if (mCrosshairsVisibility > 0.0f) {
@@ -691,13 +629,6 @@
         return false;
     }
 
-    public void setAcceptsDrops(boolean acceptsDrops) {
-        if (mAcceptsDrops != acceptsDrops) {
-            mAcceptsDrops = acceptsDrops;
-            invalidate();
-        }
-    }
-
     @Override
     public void removeAllViews() {
         clearOccupiedCells();
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 0c297dd..5daa05e 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -192,7 +192,6 @@
     private Runnable mDelayedResizeRunnable;
     private int mDisplayWidth;
     private int mDisplayHeight;
-    private boolean mIsStaticWallpaper;
     private int mWallpaperTravelWidth;
 
     // Variables relating to the creation of user folders by hovering shortcuts over shortcuts
@@ -639,7 +638,6 @@
 
     protected void onPageBeginMoving() {
         super.onPageBeginMoving();
-        mIsStaticWallpaper = mWallpaperManager.getWallpaperInfo() == null;
 
         if (isHardwareAccelerated()) {
             updateChildrenLayersEnabled();
@@ -692,12 +690,6 @@
     };
 
     // As a ratio of screen height, the total distance we want the parallax effect to span
-    // vertically
-    private float wallpaperTravelToScreenHeightRatio(int width, int height) {
-        return 1.1f;
-    }
-
-    // As a ratio of screen height, the total distance we want the parallax effect to span
     // horizontally
     private float wallpaperTravelToScreenWidthRatio(int width, int height) {
         float aspectRatio = width / (float) height;
@@ -739,7 +731,7 @@
         // parallax effects
         if (LauncherApplication.isScreenLarge()) {
             mWallpaperWidth = (int) (maxDim * wallpaperTravelToScreenWidthRatio(maxDim, minDim));
-            mWallpaperHeight = (int)(maxDim * wallpaperTravelToScreenHeightRatio(maxDim, minDim));
+            mWallpaperHeight = maxDim;
         } else {
             mWallpaperWidth = Math.max((int) (minDim * WALLPAPER_SCREENS_SPAN), maxDim);
             mWallpaperHeight = maxDim;
@@ -765,52 +757,31 @@
     }
 
     private float wallpaperOffsetForCurrentScroll() {
-        final boolean overScrollWallpaper = LauncherApplication.isScreenLarge();
-        final boolean isStaticWallpaper = mIsStaticWallpaper;
         // The wallpaper travel width is how far, from left to right, the wallpaper will move
-        // at this orientation (for example, in portrait mode we don't move all the way to the
-        // edges of the wallpaper, or otherwise the parallax effect would be too strong)
-        int wallpaperTravelWidth = mWallpaperTravelWidth;
-        if (!overScrollWallpaper || !isStaticWallpaper) {
-            wallpaperTravelWidth = mWallpaperWidth;
+        // at this orientation. On tablets in portrait mode we don't move all the way to the
+        // edges of the wallpaper, or otherwise the parallax effect would be too strong.
+        int wallpaperTravelWidth = mWallpaperWidth;
+        if (LauncherApplication.isScreenLarge()) {
+            wallpaperTravelWidth = mWallpaperTravelWidth;
         }
 
         // Set wallpaper offset steps (1 / (number of screens - 1))
-        // We have 3 vertical offset states (centered, and then top/bottom aligned
-        // for all apps/customize)
-        if (LauncherApplication.isScreenLarge()) {
-            mWallpaperManager.setWallpaperOffsetSteps(1.0f / (getChildCount() - 1), 1.0f / (3 - 1));
-        } else {
-            mWallpaperManager.setWallpaperOffsetSteps(1.0f / (getChildCount() - 1), 1.0f);
-        }
+        mWallpaperManager.setWallpaperOffsetSteps(1.0f / (getChildCount() - 1), 1.0f);
 
-        // For the purposes of computing the scrollRange and overScrollOffset, we ignore
-        // assume that mLayoutScale is 1. This means that when we're in spring-loaded mode,
+        // For the purposes of computing the scrollRange and overScrollOffset, we assume
+        // that mLayoutScale is 1. This means that when we're in spring-loaded mode,
         // there's no discrepancy between the wallpaper offset for a given page.
         float layoutScale = mLayoutScale;
         mLayoutScale = 1f;
         int scrollRange = getScrollRange();
-        float scrollProgressOffset = 0;
-
-        // Account for over scroll: you only see the absolute edge of the wallpaper if
-        // you over scroll as far as you can in landscape mode. Only do this for static wallpapers
-        // because live wallpapers (and probably 3rd party wallpaper providers) rely on the offset
-        // being even intervals from 0 to 1 (eg [0, 0.25, 0.5, 0.75, 1])
-        if (isStaticWallpaper && overScrollWallpaper) {
-            int overScrollOffset = (int) (maxOverScroll() * mDisplayWidth);
-            scrollProgressOffset += overScrollOffset / (float) getScrollRange();
-            scrollRange += 2 * overScrollOffset;
-        }
 
         // Again, we adjust the wallpaper offset to be consistent between values of mLayoutScale
-
-        float adjustedScrollX = overScrollWallpaper ?
-                mScrollX : Math.max(0, Math.min(mScrollX, mMaxScrollX));
+        float adjustedScrollX = Math.max(0, Math.min(mScrollX, mMaxScrollX));
         adjustedScrollX *= mWallpaperScrollRatio;
         mLayoutScale = layoutScale;
 
         float scrollProgress =
-            adjustedScrollX / (float) scrollRange + scrollProgressOffset;
+            adjustedScrollX / (float) scrollRange;
         float offsetInDips = wallpaperTravelWidth * scrollProgress +
             (mWallpaperWidth - wallpaperTravelWidth) / 2; // center it
         float offset = offsetInDips / (float) mWallpaperWidth;
@@ -889,8 +860,6 @@
         float mVerticalCatchupConstant = 0.35f;
 
         public WallpaperOffsetInterpolator() {
-            mVerticalWallpaperOffset = LauncherApplication.isScreenLarge() ? 0.5f : 0f;
-            mFinalVerticalWallpaperOffset = LauncherApplication.isScreenLarge() ? 0.5f : 0f;
         }
 
         public void setOverrideHorizontalCatchupConstant(boolean override) {
@@ -1525,6 +1494,9 @@
     }
 
     void changeState(final State state, boolean animated, int delay) {
+        if (mState == state) {
+            return;
+        }
         if (mFirstLayout) {
             // (mFirstLayout == "first layout has not happened yet")
             // cancel any pending shrinks that were set earlier
@@ -2390,7 +2362,6 @@
 
             // Show the current page outlines to indicate that we can accept this drop
             showOutlines();
-            layout.setIsDragOccuring(true);
             layout.onDragEnter();
             layout.visualizeDropLocation(null, mDragOutline, x, y, 1, 1, null, null);
 
@@ -2451,7 +2422,6 @@
         }
         case DragEvent.ACTION_DRAG_ENDED:
             // Hide the page outlines after the drop
-            layout.setIsDragOccuring(false);
             layout.onDragExit();
             hideOutlines();
             return true;