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);
