merge in ics-release history after reset to master
diff --git a/res/layout-port/folder_cling.xml b/res/layout-port/folder_cling.xml
index 9a7969c..d2796a0 100644
--- a/res/layout-port/folder_cling.xml
+++ b/res/layout-port/folder_cling.xml
@@ -22,7 +22,7 @@
         android:layout_height="match_parent"
         android:layout_marginLeft="20dp"
         android:layout_marginRight="10dp"
-        android:layout_marginTop="70dp">
+        android:layout_marginTop="@dimen/folderClingMarginTop">
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index eae7933..6e9b237 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -62,7 +62,7 @@
     <string name="menu_add" msgid="3065046628354640854">"Añadir"</string>
     <string name="menu_manage_apps" msgid="2308685199463588895">"Administrar aplicaciones"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Fondo de pantalla"</string>
-    <string name="menu_search" msgid="4826514464423239041">"Buscar con Google"</string>
+    <string name="menu_search" msgid="4826514464423239041">"Buscar"</string>
     <string name="menu_notifications" msgid="6424587053194766192">"Notificaciones"</string>
     <string name="menu_settings" msgid="3946232973327980394">"Ajustes del sistema"</string>
     <string name="menu_help" msgid="4901160661634590633">"Ayuda"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index bf6fbc6..56b2707 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -40,7 +40,7 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Ярлыки"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Виджеты"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Обои"</string>
-    <string name="out_of_space" msgid="8365249326091984698">"На этом главном экране нет свободного места."</string>
+    <string name="out_of_space" msgid="8365249326091984698">"На этом экране всё занято."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Виджет слишком велик для слота."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Ярлык \"<xliff:g id="NAME">%s</xliff:g>\" создан"</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"Ярлык \"<xliff:g id="NAME">%s</xliff:g>\" удален."</string>
diff --git a/res/values-sw340dp-land/dimens.xml b/res/values-sw340dp-land/dimens.xml
index e6b40db..a723dcc 100644
--- a/res/values-sw340dp-land/dimens.xml
+++ b/res/values-sw340dp-land/dimens.xml
@@ -15,6 +15,9 @@
 -->
 
 <resources>
+<!-- Clings -->
+    <dimen name="folderClingMarginTop">50dp</dimen>
+
 <!-- Workspace -->
     <dimen name="workspace_width_gap">0dp</dimen>
     <dimen name="workspace_height_gap">0dp</dimen>
diff --git a/res/values-sw340dp-port/dimens.xml b/res/values-sw340dp-port/dimens.xml
index ab8cfec..a6ba6ed 100644
--- a/res/values-sw340dp-port/dimens.xml
+++ b/res/values-sw340dp-port/dimens.xml
@@ -15,6 +15,9 @@
 -->
 
 <resources>
+<!-- Clings -->
+    <dimen name="folderClingMarginTop">70dp</dimen>
+
 <!-- Workspace -->
     <dimen name="workspace_width_gap">0dp</dimen>
     <dimen name="workspace_height_gap">0dp</dimen>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index ab24d5b..97f922f 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -17,6 +17,7 @@
 <resources>
 <!-- Cling -->
     <dimen name="clingPunchThroughGraphicCenterRadius">94dp</dimen>
+    <dimen name="folderClingMarginTop">20dp</dimen>
 
 <!-- Workspace -->
     <dimen name="qsb_bar_height">40dp</dimen>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index c8fe024..05a83b2 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -124,8 +124,6 @@
         <item name="android:layout_gravity">center_vertical</item>
         <item name="android:paddingTop">@dimen/toolbar_button_vertical_padding</item>
         <item name="android:paddingBottom">@dimen/toolbar_button_vertical_padding</item>
-        <item name="android:paddingLeft">@dimen/toolbar_button_horizontal_padding</item>
-        <item name="android:paddingRight">@dimen/toolbar_button_horizontal_padding</item>
     </style>
     <style name="SearchButtonDivider">
         <item name="android:layout_width">wrap_content</item>
diff --git a/src/com/android/launcher2/Folder.java b/src/com/android/launcher2/Folder.java
index 8a198f8..019ac70 100644
--- a/src/com/android/launcher2/Folder.java
+++ b/src/com/android/launcher2/Folder.java
@@ -678,6 +678,20 @@
         mCurrentDragInfo = null;
         mCurrentDragView = null;
         mSuppressOnAdd = false;
+
+        // Reordering may have occured, and we need to save the new item locations. We do this once
+        // at the end to prevent unnecessary database operations.
+        updateItemLocationsInDatabase();
+    }
+
+    private void updateItemLocationsInDatabase() {
+        ArrayList<View> list = getItemsInReadingOrder();
+        for (int i = 0; i < list.size(); i++) {
+            View v = list.get(i);
+            ItemInfo info = (ItemInfo) v.getTag();
+            LauncherModel.moveItemInDatabase(mLauncher, info, mInfo.id, 0,
+                        info.cellX, info.cellY);
+        }
     }
 
     public void notifyDrop() {
@@ -694,7 +708,7 @@
         return null;
     }
 
-    private void setupContentDimension(int count) {
+    private void setupContentDimensions(int count) {
         ArrayList<View> list = getItemsInReadingOrder();
 
         int countX = mContent.getCountX();
@@ -783,7 +797,7 @@
     }
 
     private void setupContentForNumItems(int count) {
-        setupContentDimension(count);
+        setupContentDimensions(count);
 
         DragLayer.LayoutParams lp = (DragLayer.LayoutParams) getLayoutParams();
         if (lp == null) {
@@ -933,7 +947,7 @@
                 mCurrentDragView.setVisibility(VISIBLE);
             }
             mItemsInvalidated = true;
-            setupContentDimension(getItemCount());
+            setupContentDimensions(getItemCount());
             mSuppressOnAdd = true;
         }
         mInfo.add(item);