Merge "Applying fake perspective transform to the home screen previews"
diff --git a/res/drawable-xlarge/all_apps_button_normal.png b/res/drawable-xlarge/all_apps_button_normal.png
index 095ce63..e1c8b7d 100644
--- a/res/drawable-xlarge/all_apps_button_normal.png
+++ b/res/drawable-xlarge/all_apps_button_normal.png
Binary files differ
diff --git a/res/drawable-xlarge/all_apps_button_pressed.png b/res/drawable-xlarge/all_apps_button_pressed.png
index 50e4735..9dcfaa5 100644
--- a/res/drawable-xlarge/all_apps_button_pressed.png
+++ b/res/drawable-xlarge/all_apps_button_pressed.png
Binary files differ
diff --git a/res/drawable-xlarge/configure_button_normal.png b/res/drawable-xlarge/configure_button_normal.png
index 066f492..b11c2a8 100644
--- a/res/drawable-xlarge/configure_button_normal.png
+++ b/res/drawable-xlarge/configure_button_normal.png
Binary files differ
diff --git a/res/drawable-xlarge/configure_button_pressed.png b/res/drawable-xlarge/configure_button_pressed.png
index 536ed7c..70db9b7 100644
--- a/res/drawable-xlarge/configure_button_pressed.png
+++ b/res/drawable-xlarge/configure_button_pressed.png
Binary files differ
diff --git a/res/drawable-xlarge/glow_wallpaper.png b/res/drawable-xlarge/glow_wallpaper.png
new file mode 100644
index 0000000..eb29449
--- /dev/null
+++ b/res/drawable-xlarge/glow_wallpaper.png
Binary files differ
diff --git a/res/drawable-xlarge/glow_wallpaper_small.png b/res/drawable-xlarge/glow_wallpaper_small.png
new file mode 100644
index 0000000..f83fc60
--- /dev/null
+++ b/res/drawable-xlarge/glow_wallpaper_small.png
Binary files differ
diff --git a/res/drawable-xlarge/mini_home_screen_bg.9.png b/res/drawable-xlarge/mini_home_screen_bg.9.png
index fd989c1..ecbbcb4 100644
--- a/res/drawable-xlarge/mini_home_screen_bg.9.png
+++ b/res/drawable-xlarge/mini_home_screen_bg.9.png
Binary files differ
diff --git a/res/drawable-xlarge/mini_home_screen_bg_hover.9.png b/res/drawable-xlarge/mini_home_screen_bg_hover.9.png
index 331ad54..48af564 100644
--- a/res/drawable-xlarge/mini_home_screen_bg_hover.9.png
+++ b/res/drawable-xlarge/mini_home_screen_bg_hover.9.png
Binary files differ
diff --git a/res/drawable-xlarge/search_button_normal.png b/res/drawable-xlarge/search_button_normal.png
index 3a3045a..b172074 100644
--- a/res/drawable-xlarge/search_button_normal.png
+++ b/res/drawable-xlarge/search_button_normal.png
Binary files differ
diff --git a/res/drawable-xlarge/search_button_pressed.png b/res/drawable-xlarge/search_button_pressed.png
index 8ae6b16..c2926c8 100644
--- a/res/drawable-xlarge/search_button_pressed.png
+++ b/res/drawable-xlarge/search_button_pressed.png
Binary files differ
diff --git a/res/drawable-xlarge/trashcan.png b/res/drawable-xlarge/trashcan.png
index 22134b4..839d4b8 100644
--- a/res/drawable-xlarge/trashcan.png
+++ b/res/drawable-xlarge/trashcan.png
Binary files differ
diff --git a/res/drawable-xlarge/trashcan_hover.png b/res/drawable-xlarge/trashcan_hover.png
index 3ac6922..cc2fde7 100644
--- a/res/drawable-xlarge/trashcan_hover.png
+++ b/res/drawable-xlarge/trashcan_hover.png
Binary files differ
diff --git a/res/layout-xlarge/all_apps_tabbed.xml b/res/layout-xlarge/all_apps_tabbed.xml
index 5a43361..10d99a0 100644
--- a/res/layout-xlarge/all_apps_tabbed.xml
+++ b/res/layout-xlarge/all_apps_tabbed.xml
@@ -15,6 +15,7 @@
 -->
 <com.android.launcher2.AllAppsTabbed
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
     android:background="#30000000"
     android:paddingTop="?android:attr/windowActionBarSize">
     <LinearLayout
@@ -36,8 +37,8 @@
                 android:id="@+id/all_apps_paged_view"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                cellCountX="8"
-                cellCountY="4">
+                launcher:cellCountX="7"
+                launcher:cellCountY="4">
             </com.android.launcher2.AllAppsPagedView>
         </FrameLayout>
     </LinearLayout>
diff --git a/res/layout-xlarge/launcher.xml b/res/layout-xlarge/launcher.xml
index 7018b3e..3e13933 100644
--- a/res/layout-xlarge/launcher.xml
+++ b/res/layout-xlarge/launcher.xml
@@ -58,6 +58,7 @@
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
             android:layout_gravity="left"
+            android:layout_marginLeft="@dimen/toolbar_button_spacing"
 
             android:onClick="onClickSearchButton"
             android:focusable="true"
@@ -70,6 +71,7 @@
             android:layout_height="match_parent"
             android:layout_alignParentRight="true"
             android:layout_marginLeft="@dimen/toolbar_button_spacing"
+            android:layout_marginRight="@dimen/toolbar_button_spacing"
 
             android:onClick="onClickAllAppsButton"
             android:focusable="true"
diff --git a/res/values-xlarge/wallpapers.xml b/res/values-xlarge/wallpapers.xml
index 90a6af7..f22654d 100644
--- a/res/values-xlarge/wallpapers.xml
+++ b/res/values-xlarge/wallpapers.xml
@@ -17,6 +17,6 @@
 
 <resources>
     <string-array name="wallpapers" translatable="false">
-        <item>wallpaper_leaf</item>
+        <item>glow_wallpaper</item>
     </string-array>
 </resources>
diff --git a/src/com/android/launcher2/AllAppsPagedView.java b/src/com/android/launcher2/AllAppsPagedView.java
index b1275b8..1c2fa12 100644
--- a/src/com/android/launcher2/AllAppsPagedView.java
+++ b/src/com/android/launcher2/AllAppsPagedView.java
@@ -204,11 +204,6 @@
             return false;
         }
 
-        // start the choice mode, and select the item that was long-pressed
-        if (isChoiceMode(CHOICE_MODE_NONE)) {
-            startChoiceMode(CHOICE_MODE_SINGLE, this);
-        }
-
         if (v instanceof Checkable) {
             // In preparation for drag, we always reset the checked grand children regardless of
             // what choice mode we are in
@@ -219,6 +214,11 @@
             c.toggle();
         }
 
+        // Start choice mode AFTER the item is selected
+        if (isChoiceMode(CHOICE_MODE_NONE)) {
+            startChoiceMode(CHOICE_MODE_SINGLE, this);
+        }
+
         ApplicationInfo app = (ApplicationInfo) v.getTag();
         app = new ApplicationInfo(app);
 
@@ -399,6 +399,7 @@
     @Override
     public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
         mode.setTitle(R.string.cab_selection_text);
+
         menu.add(0, MENU_APP_INFO, 0, R.string.cab_menu_app_info)
                 .setIcon(R.drawable.info_button);
         menu.add(0, MENU_DELETE_APP, 0, R.string.cab_menu_delete_app)
@@ -423,8 +424,7 @@
         final int id = item.getItemId();
 
         // Assumes that we are in CHOICE_MODE_SINGLE
-        final View chosenView = (View) getSingleCheckedGrandchild();
-        final ApplicationInfo appInfo = (ApplicationInfo) chosenView.getTag();
+        final ApplicationInfo appInfo = (ApplicationInfo) getChosenItem();
 
         if (id == MENU_APP_INFO) {
             mLauncher.startApplicationDetailsActivity(appInfo.componentName);
diff --git a/src/com/android/launcher2/ApplicationInfo.java b/src/com/android/launcher2/ApplicationInfo.java
index 6d78a44..0851cd3 100644
--- a/src/com/android/launcher2/ApplicationInfo.java
+++ b/src/com/android/launcher2/ApplicationInfo.java
@@ -100,6 +100,7 @@
         componentName = info.componentName;
         title = info.title.toString();
         intent = new Intent(info.intent);
+        flags = info.flags;
     }
 
     /**
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index 7ae26bb..8cf7041 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -131,9 +131,11 @@
         if (LauncherApplication.isScreenXLarge()) {
             mDimmedBitmapBackground = getResources().getDrawable(
                     R.drawable.mini_home_screen_bg);
+            mDimmedBitmapBackground.setFilterBitmap(true);
 
             mDimmedBitmapBackgroundHover = getResources().getDrawable(
                     R.drawable.mini_home_screen_bg_hover);
+            mDimmedBitmapBackgroundHover.setFilterBitmap(true);
         }
 
         TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CellLayout, defStyle, 0);
@@ -196,7 +198,7 @@
             }
             mDimmedBitmapPaint.setAlpha((int) (mDimmedBitmapAlpha * 255));
 
-            canvas.drawBitmap(mDimmedBitmap, mDimmedBitmapRect, mLayoutRect, mDimmedBitmapPaint);
+            //canvas.drawBitmap(mDimmedBitmap, mDimmedBitmapRect, mLayoutRect, mDimmedBitmapPaint);
         }
     }
 
@@ -240,7 +242,7 @@
 
             // We might be in the middle or end of shrinking/fading to a dimmed view
             // Make sure this view's alpha is set the same as all the rest of the views
-            child.setAlpha(1.0f - mDimmedBitmapAlpha);
+            //child.setAlpha(1.0f - mDimmedBitmapAlpha);
 
             addView(child, index, lp);
 
@@ -629,7 +631,7 @@
             updateDimmedBitmap();
         }
         mDimmedBitmapAlpha = alpha;
-        setChildrenAlpha(1.0f - mDimmedBitmapAlpha);
+        //setChildrenAlpha(1.0f - mDimmedBitmapAlpha);
         invalidate();
     }
 
@@ -652,10 +654,10 @@
 
         // draw the screen into the bitmap
         // just for drawing to the bitmap, make all the items on the screen opaque
-        setChildrenAlpha(1.0f);
+        //setChildrenAlpha(1.0f);
         // call our superclass's dispatchdraw so we don't draw the background
         super.dispatchDraw(mDimmedBitmapCanvas);
-        setChildrenAlpha(1.0f - mDimmedBitmapAlpha);
+        //setChildrenAlpha(1.0f - mDimmedBitmapAlpha);
 
         // replace all colored areas with a dark  (semi-transparent black)
         mDimmedBitmapCanvas.drawColor(Color.argb(160, 0, 0, 0), PorterDuff.Mode.SRC_IN);
diff --git a/src/com/android/launcher2/DeleteZone.java b/src/com/android/launcher2/DeleteZone.java
index c36f701..7e4293f 100644
--- a/src/com/android/launcher2/DeleteZone.java
+++ b/src/com/android/launcher2/DeleteZone.java
@@ -34,7 +34,6 @@
 import android.view.animation.AnimationSet;
 import android.view.animation.TranslateAnimation;
 import android.widget.ImageView;
-import android.widget.Toast;
 
 public class DeleteZone extends ImageView implements DropTarget, DragController.DragListener {
     private static final int ORIENTATION_HORIZONTAL = 1;
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index a6f0a0e..dc0e7e9 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -1163,15 +1163,12 @@
 
             // in all these cases, only animate if we're already on home
             if (LauncherApplication.isScreenXLarge()) {
-                if (alreadyOnHome && !mWorkspace.isSmall() &&
-                        !allAppsVisible && !customizationDrawerVisible) {
-                    mWorkspace.shrinkToMiddle();
-                } else {
-                    mWorkspace.unshrink(alreadyOnHome);
-                }
-            } else if (!mWorkspace.isDefaultPageShowing()) {
+                mWorkspace.unshrink(alreadyOnHome);
+            }
+            if (!mWorkspace.isDefaultPageShowing()) {
                 // on the phone, we don't animate the change to the workspace if all apps is visible
-                mWorkspace.moveToDefaultScreen(alreadyOnHome && !allAppsVisible);
+                mWorkspace.moveToDefaultScreen(
+                        alreadyOnHome && (LauncherApplication.isScreenXLarge() || !allAppsVisible));
             }
             closeAllApps(alreadyOnHome && allAppsVisible);
             hideCustomizationDrawer(alreadyOnHome);
@@ -1307,7 +1304,7 @@
 
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
-        if (isWorkspaceLocked() || LauncherApplication.isScreenXLarge()) {
+        if (isWorkspaceLocked()) {
             return false;
         }
 
diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java
index c638119..c62c397 100644
--- a/src/com/android/launcher2/PagedView.java
+++ b/src/com/android/launcher2/PagedView.java
@@ -1004,9 +1004,10 @@
     }
 
     protected void startChoiceMode(int mode, ActionMode.Callback callback) {
-        // StartActionMode may call through toendChoiceMode, so we should do this first
-        mActionMode = startActionMode(callback);
-        mChoiceMode = mode;
+        if (isChoiceMode(CHOICE_MODE_NONE)) {
+            mChoiceMode = mode;
+            mActionMode = startActionMode(callback);
+        }
     }
 
     public void endChoiceMode() {