merge in ics-release history after reset to master
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 0d44db8..3eec49f 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -86,10 +86,10 @@
     <dimen name="dragViewOffsetY">-8dp</dimen>
 
     <!-- Padding applied to AppWidgets -->
-    <dimen name="app_widget_padding_left">3dp</dimen>
-    <dimen name="app_widget_padding_right">3dp</dimen>
-    <dimen name="app_widget_padding_top">1dp</dimen>
-    <dimen name="app_widget_padding_bottom">1dp</dimen>
+    <dimen name="app_widget_padding_left">4dp</dimen>
+    <dimen name="app_widget_padding_right">4dp</dimen>
+    <dimen name="app_widget_padding_top">4dp</dimen>
+    <dimen name="app_widget_padding_bottom">4dp</dimen>
 
 <!-- Folders -->
     <!-- The size of the image which sits behind the preview of the folder contents -->
diff --git a/res/xml/default_workspace.xml b/res/xml/default_workspace.xml
index f6e363c..5bb6b4b 100644
--- a/res/xml/default_workspace.xml
+++ b/res/xml/default_workspace.xml
@@ -18,6 +18,14 @@
     <!-- Far-left screen [0] -->
 
     <!-- Left screen [1] -->
+    <appwidget
+        launcher:packageName="com.android.settings"
+        launcher:className="com.android.settings.widget.SettingsAppWidgetProvider"
+        launcher:screen="1"
+        launcher:x="0"
+        launcher:y="1"
+        launcher:spanX="4"
+        launcher:spanY="1" />
 
     <!-- Middle screen [2] -->
     <favorite
@@ -29,8 +37,7 @@
     <folder
         launcher:screen="2"
         launcher:x="3"
-        launcher:y="3"
-        launcher:title="@string/google_apps_folder_name">
+        launcher:y="3">
         <favorite
             launcher:packageName="com.google.android.apps.plus"
             launcher:className="com.google.android.apps.plus.phone.HomeActivity" />
@@ -38,6 +45,9 @@
             launcher:packageName="com.google.android.gm"
             launcher:className="com.google.android.gm.ConversationListActivityGmail" />
         <favorite
+            launcher:packageName="com.google.android.talk"
+            launcher:className="com.google.android.talk.SigningInActivity" />
+        <favorite
             launcher:packageName="com.google.android.apps.maps"
             launcher:className="com.google.android.maps.MapsActivity" />
         <favorite
@@ -67,6 +77,14 @@
     </folder>
 
     <!-- Right screen [3] -->
+    <appwidget
+        launcher:packageName="com.android.vending"
+        launcher:className="com.android.vending.MarketWidgetProvider"
+        launcher:screen="3"
+        launcher:x="1"
+        launcher:y="1"
+        launcher:spanX="2"
+        launcher:spanY="2" />
 
     <!-- Far-right screen [4] -->
 
@@ -86,8 +104,8 @@
         launcher:x="1"
         launcher:y="0" />
     <favorite
-        launcher:packageName="com.google.android.talk"
-        launcher:className="com.google.android.talk.SigningInActivity"
+        launcher:packageName="com.android.mms"
+        launcher:className="com.android.mms.ui.ConversationList"
         launcher:container="-101"
         launcher:screen="3"
         launcher:x="3"
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index eaa98c1..f05850b 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -52,6 +52,7 @@
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.AsyncTask;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Environment;
 import android.os.Handler;
@@ -74,8 +75,8 @@
 import android.view.MotionEvent;
 import android.view.Surface;
 import android.view.View;
-import android.view.View.OnLongClickListener;
 import android.view.ViewGroup;
+import android.view.View.OnLongClickListener;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.animation.DecelerateInterpolator;
 import android.view.inputmethod.InputMethodManager;
@@ -729,8 +730,6 @@
         }
     }
 
-
-
     /**
      * Creates a view representing a shortcut.
      *
@@ -845,6 +844,39 @@
         }
     }
 
+    class Padding {
+        int left = 0;
+        int right = 0;
+        int top = 0;
+        int bottom = 0;
+    }
+
+    Padding getPaddingForWidget(AppWidgetProviderInfo widgetInfo) {
+        PackageManager packageManager = getPackageManager();
+        Padding p = new Padding();
+        android.content.pm.ApplicationInfo appInfo;
+
+        try {
+            appInfo = packageManager.getApplicationInfo(
+                    widgetInfo.provider.getPackageName(), 0);
+        } catch (Exception e) {
+            // if we can't find the package, return 0 padding
+            return p;
+        }
+
+        // TODO: This should be ICE_CREAM_SANDWICH, but since the unbundled apps
+        // may not have updated their targetSdkVersion yet, we've bumped it down for now.
+        if (appInfo.targetSdkVersion >= Build.VERSION_CODES.HONEYCOMB_MR2) {
+            Resources r = getResources();
+            p.left = r.getDimensionPixelSize(R.dimen.app_widget_padding_left);
+            p.right = r.getDimensionPixelSize(R.dimen.app_widget_padding_right);
+            p.top = r.getDimensionPixelSize(R.dimen.app_widget_padding_top);
+            p.bottom = r.getDimensionPixelSize(R.dimen.app_widget_padding_bottom);
+        }
+
+        return p;
+    }
+
     /**
      * Add a widget to the workspace.
      *
@@ -857,15 +889,11 @@
         // Calculate the grid spans needed to fit this widget
         CellLayout layout = getCellLayout(container, screen);
 
+        Padding padding = getPaddingForWidget(appWidgetInfo);
         // We want to account for the extra amount of padding that we are adding to the widget
         // to ensure that it gets the full amount of space that it has requested
-        Resources r = getResources();
-        int requiredWidth = appWidgetInfo.minWidth +
-                r.getDimensionPixelSize(R.dimen.app_widget_padding_left) +
-                r.getDimensionPixelSize(R.dimen.app_widget_padding_right);
-        int requiredHeight = appWidgetInfo.minHeight + 
-                r.getDimensionPixelSize(R.dimen.app_widget_padding_top) +
-                r.getDimensionPixelSize(R.dimen.app_widget_padding_bottom);
+        int requiredWidth = appWidgetInfo.minWidth + padding.left + padding.right;
+        int requiredHeight = appWidgetInfo.minHeight + padding.top + padding.bottom;
         int[] spanXY = layout.rectToCell(requiredWidth, requiredHeight, null);
 
         // Try finding open space on Launcher screen
diff --git a/src/com/android/launcher2/LauncherAppWidgetHostView.java b/src/com/android/launcher2/LauncherAppWidgetHostView.java
index 7c3b993..a84ced6 100644
--- a/src/com/android/launcher2/LauncherAppWidgetHostView.java
+++ b/src/com/android/launcher2/LauncherAppWidgetHostView.java
@@ -17,6 +17,7 @@
 package com.android.launcher2;
 
 import android.appwidget.AppWidgetHostView;
+import android.appwidget.AppWidgetProviderInfo;
 import android.content.Context;
 import android.content.res.Resources;
 import android.view.LayoutInflater;
@@ -26,6 +27,7 @@
 import android.view.ViewGroup;
 
 import com.android.launcher.R;
+import com.android.launcher2.Launcher.Padding;
 
 /**
  * {@inheritDoc}
@@ -34,17 +36,12 @@
     private boolean mHasPerformedLongPress;
     private CheckForLongPress mPendingCheckForLongPress;
     private LayoutInflater mInflater;
+    private Launcher mLauncher;
 
     public LauncherAppWidgetHostView(Context context) {
         super(context);
         mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-
-        Resources r = context.getResources();
-        // We add necessary padding to the AppWidgetHostView
-        setPadding(r.getDimensionPixelSize(R.dimen.app_widget_padding_left),
-                r.getDimensionPixelSize(R.dimen.app_widget_padding_top),
-                r.getDimensionPixelSize(R.dimen.app_widget_padding_right),
-                r.getDimensionPixelSize(R.dimen.app_widget_padding_bottom));
+        mLauncher = (Launcher) context;
     }
 
     @Override
@@ -119,6 +116,14 @@
     }
 
     @Override
+    public void setAppWidget(int appWidgetId, AppWidgetProviderInfo info) {
+        super.setAppWidget(appWidgetId, info);
+        // We add necessary padding to the AppWidgetHostView
+        Launcher.Padding padding = mLauncher.getPaddingForWidget(info);
+        setPadding(padding.left, padding.top, padding.right, padding.bottom);
+    }
+
+    @Override
     public int getDescendantFocusability() {
         return ViewGroup.FOCUS_BLOCK_DESCENDANTS;
     }