merge in jb-release history after reset to jb-dev
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index ae5a8c7..9d33b97 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Kortpaaie"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Legstukke"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Muurpapier"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Geen spasie op tuisskerm oor nie."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Geen meer spasie op tuisskerm nie."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Geen plek meer op die warmlaai nie."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Hierdie legstuk is te groot vir die hoofposisie."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Kortpad \"<xliff:g id="NAME">%s</xliff:g>\" is geskep."</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 0b52376..d3bd40f 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -40,7 +40,9 @@
     <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="3056555298801463098">"የመነሻ ማያ ገጾችህ ላይ ተጨማሪ ቦታ የለም።"</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"በዚህ መነሻ ማያ ላይ ምንም ቦታ የለም።"</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"በመትከያ ቦታው ላይ ተጨማሪ ክፍል የለም።"</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"ይህ ፍርግም ለማስቀመጫው በጣም ትልቅ ነው።"</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"አቋራጭ\"<xliff:g id="NAME">%s</xliff:g> \"ተፈጥሯል።"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 3dcd631..be0f2b0 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -40,7 +40,9 @@
     <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="3056555298801463098">"ليس هناك مساحة أخرى في الشاشات الرئيسية."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"ليس هناك مساحة أخرى في هذه الشاشة الرئيسية."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"ليست هناك مساحة أخرى في منطقة الإرساء القابلة للتخصيص."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"حجم هذه الأداة كبير للغاية بحيث لا يتسع له الموقع المهم."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"تم إنشاء الاختصار \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 459b87b..ebc4b02 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -40,7 +40,9 @@
     <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="3056555298801463098">"На галоўных экранах больш няма месца."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"На Галоўнай старонцы больш няма месца."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"На Hotseat больш няма месца."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Гэты віджэт занадта вялікі для hotseat."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Створаны цэтлік \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 109e460..d76931c 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -40,7 +40,9 @@
     <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="3056555298801463098">"На началните ви екрани няма повече място."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"На този начален екран няма повече място."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"В трамплина няма повече място."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Това приспособление е твърде голямо за трамплина."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Прекият път за „<xliff:g id="NAME">%s</xliff:g>“ бе създаден."</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index a520bea..0530068 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Dreceres"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Empaperats"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"No queda espai a les pantalles d\'inici."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Ja no queda espai en aquesta pantalla Inici."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"No queda espai al hotseat."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Aquest widget és massa gran per al hotseat."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"S\'ha creat la drecera \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index be575d4..ad1ce99 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Zástupce"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgety"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Tapety"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Na plochách již není místo."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Na této ploše již není místo."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"V části hotseat již není místo."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Widget je pro hotseat příliš velký."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Zástupce <xliff:g id="NAME">%s</xliff:g> byl vytvořen."</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index f392747..316f989 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Genveje"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Tapeter"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Der er ikke mere plads på dine startskærme."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Der er ikke mere plads på Startskærmen."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Der er ikke mere plads i hotseatet."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Denne widget er for stor til hotseat."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Genvejen \"<xliff:g id="NAME">%s</xliff:g>\" blev oprettet."</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 91d025a..865720b 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Verknüpfungen"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Hintergründe"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Auf Ihrem Startbildschirm ist kein Platz mehr vorhanden."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Auf dem Startbildschirm ist kein Platz mehr vorhanden."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Auf der App-Leiste ist kein Platz mehr vorhanden."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Dieses Widget ist zu groß für die App-Leiste."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"\"<xliff:g id="NAME">%s</xliff:g>\"-Verknüpfung wurde erstellt."</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index f6c200e..9545425 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -40,7 +40,9 @@
     <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="3056555298801463098">"Δεν υπάρχει άλλος χώρος στις Αρχικές οθόνες σας."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Δεν υπάρχει χώρος σε αυτήν την αρχική οθόνη."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Δεν υπάρχει άλλος χώρος στο hotseat."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Αυτό το γραφικό στοιχείο είναι πολύ μεγάλο για το hotseat."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Δημιουργήθηκε η συντόμευση \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 939f1d7..7005487 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Shortcuts"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Wallpaper"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"No more room on your Home screens."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"No more room on this Home screen."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"No more room on the hotseat."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"This widget is too large for the hot-seat."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Shortcut \"<xliff:g id="NAME">%s</xliff:g>\" created."</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 2f8b4cc..f461cbd 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Accesos directos"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Papeles tapiz"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"No hay más espacio en tu pantalla principal."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"No hay más espacio en esta pantalla de la página principal"</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"No queda espacio en la barra de accesos directos."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Este widget es demasiado grande para el banquillo."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Acceso directo \"<xliff:g id="NAME">%s</xliff:g>\" creado."</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 86892c2..81933e3 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Accesos directos"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Fondos de pantalla"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"No queda espacio en las pantallas del escritorio."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"No queda espacio en el escritorio."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"No queda espacio en la barra de accesos directos."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Este widget es demasiado grande para la barra de accesos directos."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Se ha creado el acceso directo \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 6262f06..46c64fa 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Otseteed"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Vidinad"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Taustapildid"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Teie avakuvadel ei ole enam ruumi."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Sellel avalehel pole enam ruumi."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Kohandataval dokialal pole rohkem ruumi."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"See vidin on tööpunkti jaoks liiga suur."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Otsetee „<xliff:g id="NAME">%s</xliff:g>” loodud."</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 707abec..51c30f2 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -40,7 +40,9 @@
     <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="3056555298801463098">"فضای بیشتری در صفحات نمایش اصلی شما موجود نیست."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"اتاق دیگری در این صفحه اصلی موجود نیست."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"فضای بیشتری در صندلی داغ نیست."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"این ابزارک بیش از حد برای صندلی داغ بزرگ است."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"میانبر \"<xliff:g id="NAME">%s</xliff:g>\" ایجاد شد."</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 59754fd..7731f19 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Pikakuvakkeet"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgetit"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Taustakuvat"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Aloitusruuduilla ei ole enää tilaa."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Etusivulla ei ole enää tilaa."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Hotseatissa ei ole enää tilaa."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Tämä widget on liian suuri tähän paikkaan."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Pikakuvake <xliff:g id="NAME">%s</xliff:g> luotu"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index d0d104f..4021dbf 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Raccourcis"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Fonds d\'écran"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Vous n\'avez plus d\'espace libre sur vos écrans d\'accueil."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Plus d\'espace libre sur l\'écran d\'accueil."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Vous n\'avez plus de place sur la barre d\'accès rapide."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Ce widget est trop volumineux pour la barre d\'accès rapide."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Le raccourci \"<xliff:g id="NAME">%s</xliff:g>\" a été créé."</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 4511c31..8b99ed1 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -40,7 +40,9 @@
     <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="3056555298801463098">"आपकी होम स्‍क्रीन पर अधिक स्थान नहीं है."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"इस होम स्‍क्रीन पर और स्थान नहीं है."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"हॉटसीट पर अधिक स्‍थान नहीं है."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"हॉटसीट के लि‍ए यह वि‍जेट बहुत बड़ा है."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"\"<xliff:g id="NAME">%s</xliff:g>\" शार्टकट बना दिया गया."</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 8c2051e..6a48459 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Prečaci"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgeti"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Pozadinske slike"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Na vašim početnim zaslonima više nema mjesta."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Na ovom početnom zaslonu više nema mjesta."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Na hotseatu više nema mjesta."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Ovaj je widget prevelik za hotseat."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Izrađen je prečac za \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 2912f37..a829ce2 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Parancsikonok"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Modulok"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Háttérképek"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Nincs több hely a Kezdőképernyőkön."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Nincs több hely ezen a főoldalon."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Nincs több hely a hotseaten."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Ez a modul túl nagy a hotseat számára."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"\"<xliff:g id="NAME">%s</xliff:g>\" parancsikon létrehozva."</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 03dfee6..5692442 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Pintasan"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widget"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Wallpaper"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Tidak ada ruang lagi pada layar Utama Anda."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Tidak ada ruang lagi pada layar Utama ini."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Tidak ada ruang lagi di hotseat."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Widget ini terlalu besar untuk hotseat tersebut."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Pintasan \"<xliff:g id="NAME">%s</xliff:g>\" sudah dibuat."</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 1a3edbd..ffad4a0 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Scorciatoie"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widget"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Sfondi"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Spazio nelle schermate Home esaurito."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Spazio nella schermata Home esaurito."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Spazio nell\'area hotseat esaurito."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Questo widget è troppo grande per l\'area hotseat."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Scorciatoia \"<xliff:g id="NAME">%s</xliff:g>\" creata."</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 2835105..80d795f 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"קיצורי דרך"</string>
     <string name="group_widgets" msgid="6704978494073105844">"רכיבי Widget"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"טפטים"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"אין יותר מקום במסכי דף הבית."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"אין עוד מקום במסך דף הבית הזה."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"אין יותר מקום בפס היישומים."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Widget זה גדול מדי עבור אזור העגינה."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"הקיצור \'<xliff:g id="NAME">%s</xliff:g>\' נוצר."</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index f8ff0a7..ad43c34 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -40,7 +40,9 @@
     <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="3056555298801463098">"ホーム画面に空きスペースがありません。"</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"ホーム画面に空きスペースがありません。"</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"ホットシートに空きスペースがありません。"</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"このウィジェットはホットシートには大きすぎます。"</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"ショートカット「<xliff:g id="NAME">%s</xliff:g>」を作成しました。"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 5a8a2cc..dceb1b5 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -40,7 +40,9 @@
     <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="3056555298801463098">"홈 화면에 더 이상 공간이 없습니다."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"홈 화면에 더 이상 공간이 없습니다."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"즐겨찾는 앱 모음에 더 이상 빈 공간이 없습니다."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"이 위젯은 핫시트에 너무 큽니다."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"바로가기(\'<xliff:g id="NAME">%s</xliff:g>\')가 생성되었습니다."</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 4e977e5..f1d7bca 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Spartieji klavišai"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Valdikliai"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Darbalaukio fonai"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Pagrindiniuose ekranuose vietos nebėra."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Šiame pagrindiniame ekrane vietos nebėra."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Įtvirtintoje srityje nebėra vietos."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Šis valdiklis per didelis keliems žaidėjams."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Sukurtas „<xliff:g id="NAME">%s</xliff:g>“ spartusis klavišas."</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index fc34d21..6af92c5 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Saīsnes"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Logrīki"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Tapetes"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Sākuma ekrānos vairs nav vietas."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Šajā sākuma ekrānā vairs nav vietas."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Režīmā Hotseat vairs nav vietas."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Šis logrīks ir pārāk liels režīmam “hotseat”."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Saīsne “<xliff:g id="NAME">%s</xliff:g>” tika izveidota."</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 4ea571e..2c13cf1 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Pintasan"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widget"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Kertas dinding"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Tiada lagi ruang pada skrin Utama anda."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Tiada lagi ruang pada skrin Utama ini"</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Tiada lagi ruang pada kerusi panas."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Widget ini terlalu besar untuk kerusi panas."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Pintasan \"<xliff:g id="NAME">%s</xliff:g>\" diwujudkan."</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 1210b05..361126c 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Snarveier"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Skrivebordselementer"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Bakgrunner"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Ikke mer plass på startsideskjermene."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Ikke nok plass på skrivebordet."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Dokksonen er full."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Denne modulen er for stor for hotseat-feltet."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Opprettet snarveien «<xliff:g id="NAME">%s</xliff:g>»."</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index b9e5121..fbd9f31 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Sneltoetsen"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Achtergronden"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Er is geen ruimte meer op uw startschermen."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Er is geen ruimte meer op dit startscherm."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Er is geen ruimte meer op de hotseat."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Deze widget is te groot voor de hotseat."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Snelkoppeling \'<xliff:g id="NAME">%s</xliff:g>\' is gemaakt."</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index e38a887..7a15e41 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Skróty"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widżety"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Tapety"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Brak miejsca na Twoich ekranach głównych."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Brak miejsca na tej stronie głównej"</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Brak miejsca w kieszonce."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Ten widżet jest za duży, aby umieścić go w kieszonce."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Skrót „<xliff:g id="NAME">%s</xliff:g>” został utworzony."</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 4f91467..728dbea 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Atalhos"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Imagens de fundo"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Sem espaço nos Ecrãs principais."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Não existe espaço suficiente neste ecrã principal."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Não existe espaço suficiente na barra personalizável."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Este widget é demasiado grande para a barra inferior."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"O atalho \"<xliff:g id="NAME">%s</xliff:g>\" foi criado."</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index d5657b6..2ef8d9b 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Atalhos"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Papéis de parede"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Não há mais espaço nas telas iniciais."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Não há mais espaço nesta tela da Página inicial."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Não há mais espaço no hotseat."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Este widget é muito grande para o hotseat."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Atalho \"<xliff:g id="NAME">%s</xliff:g>\" criado."</string>
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index 4048e63..be22d75 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -48,8 +48,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Scursanidas"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Funds davos"</string>
-    <!-- no translation found for out_of_space (3056555298801463098) -->
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
     <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Nagin spazi liber sin il visur da partenza."</string>
     <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
     <skip />
     <!-- no translation found for invalid_hotseat_item (6545340627805449250) -->
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 3d46177..0fca956 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Comenzi rapide"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Obiecte widget"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Imagini de fundal"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Nu mai este loc pe ecranele de pornire."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Niciun spaţiu rămas pe acest Ecran de pornire."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Nu mai există loc în bara de lansare rapidă."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Acest widget este prea mare pentru hotseat."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Comanda rapidă „<xliff:g id="NAME">%s</xliff:g>”·a fost creată."</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 0557447..4aa80be 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -40,7 +40,9 @@
     <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="3056555298801463098">"На главных экранах всё занято."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"На этом экране всё занято."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Нет свободного места в слоте."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Виджет слишком велик для слота."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Ярлык \"<xliff:g id="NAME">%s</xliff:g>\" создан"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index a9648fd..2463869 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Odkazy"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Miniaplikácie"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Tapety"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Na plochách už nie je miesto."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Na tejto ploche už nie je miesto"</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"V časti hotseat už nie je miesto."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Táto miniaplikácia je pre hotseat príliš veľká."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Odkaz <xliff:g id="NAME">%s</xliff:g> bol vytvorený."</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 4b64f0a..915c589 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Bližnjice"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Pripomočki"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Slike za ozadje"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Na začetnih zaslonih ni več prostora."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Na tem začetnem zaslonu ni več prostora."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"V vrstici z ikonami ni več prostora."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Ta pripomoček je prevelik za podnožje."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Bližnjica »<xliff:g id="NAME">%s</xliff:g>« je bila ustvarjena."</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index d0ee441..808d88e 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -40,7 +40,9 @@
     <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="3056555298801463098">"Нема више простора на Почетним екранима."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Нема више простора на овом почетном екрану."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Нема више простора на траци актуелности."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Овај виџет је превелики за траку актуелности."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Пречица „<xliff:g id="NAME">%s</xliff:g>“ је направљена."</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 0d98de8..b3ee3e1 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Genvägar"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgetar"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Bakgrundsbilder"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Det finns inte plats för mer på dina startsidor."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Det finns inte plats för mer på den här startsidan."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Utrymmet på Hotseat är fullt."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Denna widget är för stor för Hotseat."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Genvägen \"<xliff:g id="NAME">%s</xliff:g>\" har skapats."</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 0fc2a5a..bb8e6f7 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Njia za mkato"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Wijeti"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Mandhari"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Hakuna nafasi zaidi kwenye skrini zako za nyumbani."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Hakuna nafasi katika skrini hii ya nyumbani."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Hakuna nafasi zaidi kwenye eneo kali."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Wijeti hii ni kubwa zaidi kwa hotseat."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Njia ya mkato ya \"<xliff:g id="NAME">%s</xliff:g>\" imeundwa."</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index e832972..1e70ead 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -40,7 +40,9 @@
     <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="3056555298801463098">"ไม่มีที่ว่างในหน้าจอหลักของคุณ"</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"ไม่มีที่ว่างในหน้าจอหลักนี้"</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"ไม่มีที่ว่างใน hotseat"</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"วิดเจ็ตนี้มีขนาดใหญ่เกินไปสำหรับ hotseat"</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"สร้างทางลัด \"<xliff:g id="NAME">%s</xliff:g>\" แล้ว"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index a20ca09..49167fa 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Mga Shortcut"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Mga Widget"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Mga Wallpaper"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Wala nang puwang sa iyong mga Home screen."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Wala nang lugar sa Home screen na ito."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Wala nang lugar sa hotseat."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Masyadong malaki ang widget na ito para sa hotseat."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Nalikha ang shortcut na \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 03f865d..da08e56 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Kısayollar"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widget\'lar"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Duvar Kağıtları"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Ana ekranlarınızda başka yer kalmadı."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Bu Ana Sayfada yer yok."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Favori kısayollarda yer yok"</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Bu widget, hotseat için çok büyük."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"\"<xliff:g id="NAME">%s</xliff:g>\" kısayolu oluşturuldu."</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 7426a74..a8b094d 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -40,7 +40,9 @@
     <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="3056555298801463098">"На головних екранах більше немає місця."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Немає більше місця на гол. екрані."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"На гарячій панелі більше немає місця."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Цей віджет завеликий для Hotseat."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Ярлик \"<xliff:g id="NAME">%s</xliff:g>\" створено."</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index c19a9d8..a777208 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Lối tắt"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Tiện ích"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Hình nền"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Không còn chỗ trên màn hình chính của bạn."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Không còn khoảng trống trên Màn hình chính này."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Không còn chỗ trên vùng gắn."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Tiện ích này quá lớn cho điểm giới hạn."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Lối tắt \"<xliff:g id="NAME">%s</xliff:g>\" đã được tạo."</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 7c30da4..a79c704 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -40,7 +40,9 @@
     <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="3056555298801463098">"您的主屏幕上没有空间了。"</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"此主屏幕上已没有空间。"</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"底部区域已无空间。"</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"该窗口小部件太大,超出基座区域可用空间。"</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"已创建“<xliff:g id="NAME">%s</xliff:g>”快捷方式。"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 00eeaf1..800ceb4 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -40,7 +40,9 @@
     <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="3056555298801463098">"主螢幕已無空間。"</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"主螢幕已無空間"</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"停駐區已無可用空間。"</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"這個小工具過大,超出可用的空間。"</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"已建立「<xliff:g id="NAME">%s</xliff:g>」捷徑。"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 8855db5..5f90995 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -40,7 +40,9 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Izinqamuleli"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Izinqunjwana"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Amaphephadonga"</string>
-    <string name="out_of_space" msgid="3056555298801463098">"Akusenagumbi ezikrinini zakho zekhaya."</string>
+    <!-- no translation found for completely_out_of_space (1759078539443491182) -->
+    <skip />
+    <string name="out_of_space" msgid="8365249326091984698">"Asisekho isikhala kulesi sikrini Sasekhaya."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Akusenagumbi ku-hotseat."</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Le wijethi inkulu kakhulu ukuba ibe esihlalweni esishisayo"</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Isinqamuleli \"<xliff:g id="NAME">%s</xliff:g>\" senziwe"</string>
diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index 2935cea..00a35a5 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -576,9 +576,10 @@
             @Override
             public void run() {
                 mWidgetLoadingId = mLauncher.getAppWidgetHost().allocateAppWidgetId();
-                AppWidgetManager.getInstance(mLauncher).bindAppWidgetId(mWidgetLoadingId,
-                        info.componentName);
-                mWidgetCleanupState = WIDGET_BOUND;
+                if (AppWidgetManager.getInstance(mLauncher)
+                            .bindAppWidgetIdIfAllowed(mWidgetLoadingId, info.componentName)) {
+                    mWidgetCleanupState = WIDGET_BOUND;
+                }
             }
         };
         post(mBindWidgetRunnable);
@@ -586,8 +587,8 @@
         mInflateWidgetRunnable = new Runnable() {
             @Override
             public void run() {
-                AppWidgetHostView hostView =
-                        mLauncher.getAppWidgetHost().createView(mContext, mWidgetLoadingId, pInfo);
+                AppWidgetHostView hostView = mLauncher.
+                        getAppWidgetHost().createView(getContext(), mWidgetLoadingId, pInfo);
                 info.boundWidget = hostView;
                 mWidgetCleanupState = WIDGET_INFLATED;
                 hostView.setVisibility(INVISIBLE);
@@ -859,6 +860,7 @@
             iter.remove();
             mDirtyPageContent.set(task.page, true);
         }
+        mDeferredSyncWidgetPageItems.clear();
     }
 
     public void setContentType(ContentType type) {
@@ -1462,7 +1464,7 @@
 
                 // If the view has 0 alpha, we set it to be invisible so as to prevent
                 // it from accepting touches
-                if (alpha < ViewConfiguration.ALPHA_THRESHOLD) {
+                if (alpha == 0) {
                     v.setVisibility(INVISIBLE);
                 } else if (v.getVisibility() != VISIBLE) {
                     v.setVisibility(VISIBLE);
@@ -1687,6 +1689,6 @@
             count = mNumWidgetPages;
         }
 
-        return String.format(mContext.getString(stringId), page + 1, count);
+        return String.format(getContext().getString(stringId), page + 1, count);
     }
 }
diff --git a/src/com/android/launcher2/AppsCustomizeTabHost.java b/src/com/android/launcher2/AppsCustomizeTabHost.java
index 21842da..34b7c09 100644
--- a/src/com/android/launcher2/AppsCustomizeTabHost.java
+++ b/src/com/android/launcher2/AppsCustomizeTabHost.java
@@ -102,7 +102,7 @@
         setup();
 
         final ViewGroup tabsContainer = (ViewGroup) findViewById(R.id.tabs_container);
-        final TabWidget tabs = (TabWidget) findViewById(com.android.internal.R.id.tabs);
+        final TabWidget tabs = getTabWidget();
         final AppsCustomizePagedView appsCustomizePane = (AppsCustomizePagedView)
                 findViewById(R.id.apps_customize_pane_content);
         mTabs = tabs;
@@ -123,12 +123,12 @@
         // Create the tabs
         TextView tabView;
         String label;
-        label = mContext.getString(R.string.all_apps_button_label);
+        label = getContext().getString(R.string.all_apps_button_label);
         tabView = (TextView) mLayoutInflater.inflate(R.layout.tab_widget_indicator, tabs, false);
         tabView.setText(label);
         tabView.setContentDescription(label);
         addTab(newTabSpec(APPS_TAB_TAG).setIndicator(tabView).setContent(contentFactory));
-        label = mContext.getString(R.string.widgets_tab_label);
+        label = getContext().getString(R.string.widgets_tab_label);
         tabView = (TextView) mLayoutInflater.inflate(R.layout.tab_widget_indicator, tabs, false);
         tabView.setText(label);
         tabView.setContentDescription(label);
diff --git a/src/com/android/launcher2/BubbleTextView.java b/src/com/android/launcher2/BubbleTextView.java
index 526fda7..ddc4b9f 100644
--- a/src/com/android/launcher2/BubbleTextView.java
+++ b/src/com/android/launcher2/BubbleTextView.java
@@ -99,7 +99,7 @@
 
     @Override
     protected boolean setFrame(int left, int top, int right, int bottom) {
-        if (mLeft != left || mRight != right || mTop != top || mBottom != bottom) {
+        if (getLeft() != left || getRight() != right || getTop() != top || getBottom() != bottom) {
             mBackgroundSizeChanged = true;
         }
         return super.setFrame(left, top, right, bottom);
@@ -268,11 +268,11 @@
     public void draw(Canvas canvas) {
         final Drawable background = mBackground;
         if (background != null) {
-            final int scrollX = mScrollX;
-            final int scrollY = mScrollY;
+            final int scrollX = getScrollX();
+            final int scrollY = getScrollY();
 
             if (mBackgroundSizeChanged) {
-                background.setBounds(0, 0,  mRight - mLeft, mBottom - mTop);
+                background.setBounds(0, 0,  getRight() - getLeft(), getBottom() - getTop());
                 mBackgroundSizeChanged = false;
             }
 
@@ -296,8 +296,9 @@
         getPaint().setShadowLayer(SHADOW_LARGE_RADIUS, 0.0f, SHADOW_Y_OFFSET, SHADOW_LARGE_COLOUR);
         super.draw(canvas);
         canvas.save(Canvas.CLIP_SAVE_FLAG);
-        canvas.clipRect(mScrollX, mScrollY + getExtendedPaddingTop(), mScrollX + getWidth(),
-                mScrollY + getHeight(), Region.Op.INTERSECT);
+        canvas.clipRect(getScrollX(), getScrollY() + getExtendedPaddingTop(),
+                getScrollX() + getWidth(),
+                getScrollY() + getHeight(), Region.Op.INTERSECT);
         getPaint().setShadowLayer(SHADOW_SMALL_RADIUS, 0.0f, 0.0f, SHADOW_SMALL_COLOUR);
         super.draw(canvas);
         canvas.restore();
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index a48a815..a19ccea 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -173,7 +173,7 @@
 
     public CellLayout(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
-        mDragEnforcer = new DropTarget.DragEnforcer(mContext);
+        mDragEnforcer = new DropTarget.DragEnforcer(context);
 
         // A ViewGroup usually does not draw, but CellLayout needs to draw a rectangle to show
         // the user where a dragged item will land when dropped.
@@ -747,8 +747,8 @@
     public void setTagToCellInfoForPoint(int touchX, int touchY) {
         final CellInfo cellInfo = mCellInfo;
         Rect frame = mRect;
-        final int x = touchX + mScrollX;
-        final int y = touchY + mScrollY;
+        final int x = touchX + getScrollX();
+        final int y = touchY + getScrollY();
         final int count = mShortcutsAndWidgets.getChildCount();
 
         boolean found = false;
@@ -766,7 +766,7 @@
                 // The child hit rect is relative to the CellLayoutChildren parent, so we need to
                 // offset that by this CellLayout's padding to test an (x,y) point that is relative
                 // to this view.
-                frame.offset(mPaddingLeft, mPaddingTop);
+                frame.offset(getPaddingLeft(), getPaddingTop());
                 frame.inset((int) (frame.width() * (1f - scale) / 2),
                         (int) (frame.height() * (1f - scale) / 2));
 
@@ -955,8 +955,8 @@
         }
         int left = getPaddingLeft();
         int top = getPaddingTop();
-        int right = left + getWidth() - mPaddingLeft - mPaddingRight;
-        int bottom = top + getHeight() - mPaddingTop - mPaddingBottom;
+        int right = left + getWidth() - getPaddingLeft() - getPaddingRight();
+        int bottom = top + getHeight() - getPaddingTop() - getPaddingBottom();
         r.set(left, top, right, bottom);
         return r;
     }
@@ -979,8 +979,8 @@
         int numHeightGaps = mCountY - 1;
 
         if (mOriginalWidthGap < 0 || mOriginalHeightGap < 0) {
-            int hSpace = widthSpecSize - mPaddingLeft - mPaddingRight;
-            int vSpace = heightSpecSize - mPaddingTop - mPaddingBottom;
+            int hSpace = widthSpecSize - getPaddingLeft() - getPaddingRight();
+            int vSpace = heightSpecSize - getPaddingTop() - getPaddingBottom();
             int hFreeSpace = hSpace - (mCountX * mOriginalCellWidth);
             int vFreeSpace = vSpace - (mCountY * mOriginalCellHeight);
             mWidthGap = Math.min(mMaxGap, numWidthGaps > 0 ? (hFreeSpace / numWidthGaps) : 0);
@@ -995,9 +995,9 @@
         int newWidth = widthSpecSize;
         int newHeight = heightSpecSize;
         if (widthSpecMode == MeasureSpec.AT_MOST) {
-            newWidth = mPaddingLeft + mPaddingRight + (mCountX * mCellWidth) +
+            newWidth = getPaddingLeft() + getPaddingRight() + (mCountX * mCellWidth) +
                 ((mCountX - 1) * mWidthGap);
-            newHeight = mPaddingTop + mPaddingBottom + (mCountY * mCellHeight) +
+            newHeight = getPaddingTop() + getPaddingBottom() + (mCountY * mCellHeight) +
                 ((mCountY - 1) * mHeightGap);
             setMeasuredDimension(newWidth, newHeight);
         }
@@ -1005,10 +1005,10 @@
         int count = getChildCount();
         for (int i = 0; i < count; i++) {
             View child = getChildAt(i);
-            int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(newWidth - mPaddingLeft -
-                    mPaddingRight, MeasureSpec.EXACTLY);
-            int childheightMeasureSpec = MeasureSpec.makeMeasureSpec(newHeight - mPaddingTop -
-                    mPaddingBottom, MeasureSpec.EXACTLY);
+            int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(newWidth - getPaddingLeft() -
+                    getPaddingRight(), MeasureSpec.EXACTLY);
+            int childheightMeasureSpec = MeasureSpec.makeMeasureSpec(newHeight - getPaddingTop() -
+                    getPaddingBottom(), MeasureSpec.EXACTLY);
             child.measure(childWidthMeasureSpec, childheightMeasureSpec);
         }
         setMeasuredDimension(newWidth, newHeight);
@@ -1019,8 +1019,8 @@
         int count = getChildCount();
         for (int i = 0; i < count; i++) {
             View child = getChildAt(i);
-            child.layout(mPaddingLeft, mPaddingTop,
-                    r - l - mPaddingRight, b - t - mPaddingBottom);
+            child.layout(getPaddingLeft(), getPaddingTop(),
+                    r - l - getPaddingRight(), b - t - getPaddingBottom());
         }
     }
 
@@ -2762,12 +2762,12 @@
     }
 
     public int getDesiredWidth() {
-        return mPaddingLeft + mPaddingRight + (mCountX * mCellWidth) +
+        return getPaddingLeft() + getPaddingRight() + (mCountX * mCellWidth) +
                 (Math.max((mCountX - 1), 0) * mWidthGap);
     }
 
     public int getDesiredHeight()  {
-        return mPaddingTop + mPaddingBottom + (mCountY * mCellHeight) +
+        return getPaddingTop() + getPaddingBottom() + (mCountY * mCellHeight) +
                 (Math.max((mCountY - 1), 0) * mHeightGap);
     }
 
diff --git a/src/com/android/launcher2/DragLayer.java b/src/com/android/launcher2/DragLayer.java
index f71baec..69ed053 100644
--- a/src/com/android/launcher2/DragLayer.java
+++ b/src/com/android/launcher2/DragLayer.java
@@ -28,6 +28,7 @@
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.ViewGroup;
 import android.view.ViewParent;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.accessibility.AccessibilityManager;
@@ -43,7 +44,7 @@
 /**
  * A ViewGroup that coordinates dragging across its descendants
  */
-public class DragLayer extends FrameLayout {
+public class DragLayer extends FrameLayout implements ViewGroup.OnHierarchyChangeListener {
     private DragController mDragController;
     private int[] mTmpXY = new int[2];
 
@@ -83,6 +84,7 @@
         // Disable multitouch across the workspace/all apps/customize tray
         setMotionEventSplittingEnabled(false);
         setChildrenDrawingOrderEnabled(true);
+        setOnHierarchyChangeListener(this);
     }
 
     public void setup(Launcher launcher, DragController controller) {
@@ -164,7 +166,9 @@
         if (currentFolder == null) {
             return false;
         } else {
-            if (AccessibilityManager.getInstance(mContext).isTouchExplorationEnabled()) {
+                AccessibilityManager accessibilityManager = (AccessibilityManager)
+                        getContext().getSystemService(Context.ACCESSIBILITY_SERVICE);
+            if (accessibilityManager.isTouchExplorationEnabled()) {
                 final int action = ev.getAction();
                 boolean isOverFolder;
                 switch (action) {
@@ -197,13 +201,15 @@
     }
 
     private void sendTapOutsideFolderAccessibilityEvent(boolean isEditingName) {
-        if (AccessibilityManager.getInstance(mContext).isEnabled()) {
+        AccessibilityManager accessibilityManager = (AccessibilityManager)
+                getContext().getSystemService(Context.ACCESSIBILITY_SERVICE);
+        if (accessibilityManager.isEnabled()) {
             int stringId = isEditingName ? R.string.folder_tap_to_rename : R.string.folder_tap_to_close;
             AccessibilityEvent event = AccessibilityEvent.obtain(
                     AccessibilityEvent.TYPE_VIEW_FOCUSED);
             onInitializeAccessibilityEvent(event);
-            event.getText().add(mContext.getString(stringId));
-            AccessibilityManager.getInstance(mContext).sendAccessibilityEvent(event);
+            event.getText().add(getContext().getString(stringId));
+            accessibilityManager.sendAccessibilityEvent(event);
         }
     }
 
@@ -674,14 +680,12 @@
     }
 
     @Override
-    protected void onViewAdded(View child) {
-        super.onViewAdded(child);
+    public void onChildViewAdded(View parent, View child) {
         updateChildIndices();
     }
 
     @Override
-    protected void onViewRemoved(View child) {
-        super.onViewRemoved(child);
+    public void onChildViewRemoved(View parent, View child) {
         updateChildIndices();
     }
 
diff --git a/src/com/android/launcher2/FocusHelper.java b/src/com/android/launcher2/FocusHelper.java
index 0066440..e9f986d 100644
--- a/src/com/android/launcher2/FocusHelper.java
+++ b/src/com/android/launcher2/FocusHelper.java
@@ -85,8 +85,7 @@
      */
     static boolean handleAppsCustomizeTabKeyEvent(View v, int keyCode, KeyEvent e) {
         final TabHost tabHost = findTabHostParent(v);
-        final ViewGroup contents = (ViewGroup)
-                tabHost.findViewById(com.android.internal.R.id.tabcontent);
+        final ViewGroup contents = tabHost.getTabContentView();
         final View shop = tabHost.findViewById(R.id.market_button);
 
         final int action = e.getAction();
@@ -137,7 +136,7 @@
         final PagedViewGridLayout parent = (PagedViewGridLayout) w.getParent();
         final PagedView container = (PagedView) parent.getParent();
         final TabHost tabHost = findTabHostParent(container);
-        final TabWidget tabs = (TabWidget) tabHost.findViewById(com.android.internal.R.id.tabs);
+        final TabWidget tabs = tabHost.getTabWidget();
         final int widgetIndex = parent.indexOfChild(w);
         final int widgetCount = parent.getChildCount();
         final int pageIndex = ((PagedView) container).indexToPage(container.indexOfChild(parent));
@@ -297,7 +296,7 @@
         // PagedViewCellLayout/PagedViewCellLayoutChildren relationship
         final PagedView container = (PagedView) parentLayout.getParent();
         final TabHost tabHost = findTabHostParent(container);
-        final TabWidget tabs = (TabWidget) tabHost.findViewById(com.android.internal.R.id.tabs);
+        final TabWidget tabs = tabHost.getTabWidget();
         final int iconIndex = itemContainer.indexOfChild(v);
         final int itemCount = itemContainer.getChildCount();
         final int pageIndex = ((PagedView) container).indexToPage(container.indexOfChild(parentLayout));
@@ -442,8 +441,7 @@
 
         final FocusOnlyTabWidget parent = (FocusOnlyTabWidget) v.getParent();
         final TabHost tabHost = findTabHostParent(parent);
-        final ViewGroup contents = (ViewGroup)
-                tabHost.findViewById(com.android.internal.R.id.tabcontent);
+        final ViewGroup contents = tabHost.getTabContentView();
         final int tabCount = parent.getTabCount();
         final int tabIndex = parent.getChildTabIndex(v);
 
diff --git a/src/com/android/launcher2/Folder.java b/src/com/android/launcher2/Folder.java
index 01939f8..0389264 100644
--- a/src/com/android/launcher2/Folder.java
+++ b/src/com/android/launcher2/Folder.java
@@ -127,7 +127,7 @@
         }
 
         mInputMethodManager = (InputMethodManager)
-                mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
+                getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
 
         mExpandDuration = res.getInteger(R.integer.config_folderAnimDuration);
 
@@ -250,7 +250,7 @@
 
         if (commit) {
             sendCustomAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED,
-                    String.format(mContext.getString(R.string.folder_renamed), newTitle));
+                    String.format(getContext().getString(R.string.folder_renamed), newTitle));
         }
         // In order to clear the focus from the text field, we set the focus on ourself. This
         // ensures that every time the field is clicked, focus is gained, giving reliable behavior.
@@ -379,7 +379,7 @@
             @Override
             public void onAnimationStart(Animator animation) {
                 sendCustomAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED,
-                        String.format(mContext.getString(R.string.folder_opened),
+                        String.format(getContext().getString(R.string.folder_opened),
                         mContent.getCountX(), mContent.getCountY()));
                 mState = STATE_ANIMATING;
             }
@@ -399,11 +399,13 @@
     }
 
     private void sendCustomAccessibilityEvent(int type, String text) {
-        if (AccessibilityManager.getInstance(mContext).isEnabled()) {
+        AccessibilityManager accessibilityManager = (AccessibilityManager)
+                getContext().getSystemService(Context.ACCESSIBILITY_SERVICE);
+        if (accessibilityManager.isEnabled()) {
             AccessibilityEvent event = AccessibilityEvent.obtain(type);
             onInitializeAccessibilityEvent(event);
             event.getText().add(text);
-            AccessibilityManager.getInstance(mContext).sendAccessibilityEvent(event);
+            accessibilityManager.sendAccessibilityEvent(event);
         }
     }
 
@@ -430,7 +432,7 @@
             @Override
             public void onAnimationStart(Animator animation) {
                 sendCustomAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED,
-                        mContext.getString(R.string.folder_closed));
+                        getContext().getString(R.string.folder_closed));
                 mState = STATE_ANIMATING;
             }
         });
diff --git a/src/com/android/launcher2/FolderIcon.java b/src/com/android/launcher2/FolderIcon.java
index 2377f30..4a71329 100644
--- a/src/com/android/launcher2/FolderIcon.java
+++ b/src/com/android/launcher2/FolderIcon.java
@@ -601,7 +601,7 @@
 
     public void onTitleChanged(CharSequence title) {
         mFolderName.setText(title.toString());
-        setContentDescription(String.format(mContext.getString(R.string.folder_name_format),
+        setContentDescription(String.format(getContext().getString(R.string.folder_name_format),
                 title));
     }
 
diff --git a/src/com/android/launcher2/HolographicOutlineHelper.java b/src/com/android/launcher2/HolographicOutlineHelper.java
index 1faaeef..56d194d 100644
--- a/src/com/android/launcher2/HolographicOutlineHelper.java
+++ b/src/com/android/launcher2/HolographicOutlineHelper.java
@@ -61,8 +61,6 @@
         sMediumInnerBlurMaskFilter = new BlurMaskFilter(scale * 2.0f, BlurMaskFilter.Blur.NORMAL);
     }
 
-    private static final MaskFilter sCoarseClipTable = TableMaskFilter.CreateClipTable(0, 200);
-
     private int[] mTempOffset = new int[2];
 
     HolographicOutlineHelper() {
@@ -99,24 +97,6 @@
     }
 
     /**
-     * Apply an outer blur to the given bitmap.
-     * You should use OUTER_BLUR_RADIUS to ensure that the bitmap is big enough to draw
-     * the blur without clipping.
-     */
-    void applyOuterBlur(Bitmap bitmap, Canvas canvas, int color) {
-        mBlurPaint.setMaskFilter(sThickOuterBlurMaskFilter);
-        Bitmap glow = bitmap.extractAlpha(mBlurPaint, mTempOffset);
-
-        // Use the clip table to make the glow heavier closer to the outline
-        mHolographicPaint.setMaskFilter(sCoarseClipTable);
-        mHolographicPaint.setAlpha(150);
-        mHolographicPaint.setColor(color);
-
-        canvas.drawBitmap(glow, mTempOffset[0], mTempOffset[1], mHolographicPaint);
-        glow.recycle();
-    }
-
-    /**
      * Applies a more expensive and accurate outline to whatever is currently drawn in a specified
      * bitmap.
      */
diff --git a/src/com/android/launcher2/IconCache.java b/src/com/android/launcher2/IconCache.java
index efa9fac..1e42f1b 100644
--- a/src/com/android/launcher2/IconCache.java
+++ b/src/com/android/launcher2/IconCache.java
@@ -64,7 +64,7 @@
 
     public Drawable getFullResDefaultActivityIcon() {
         return getFullResIcon(Resources.getSystem(),
-                com.android.internal.R.mipmap.sym_def_app_icon);
+                android.R.mipmap.sym_def_app_icon);
     }
 
     public Drawable getFullResIcon(Resources resources, int iconId) {
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index e2b86a4..2829e3c 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -133,6 +133,8 @@
     private static final int REQUEST_PICK_APPWIDGET = 9;
     private static final int REQUEST_PICK_WALLPAPER = 10;
 
+    private static final int REQUEST_BIND_APPWIDGET = 11;
+
     static final String EXTRA_SHORTCUT_DUPLICATE = "duplicate";
 
     static final int SCREEN_COUNT = 5;
@@ -250,7 +252,7 @@
     private static Drawable.ConstantState[] sAppMarketIcon = new Drawable.ConstantState[2];
 
     static final ArrayList<String> sDumpLogs = new ArrayList<String>();
-    PendingAddWidgetInfo mWidgetBeingConfigured = null;
+    PendingAddWidgetInfo mWidgetBeingBoundOrConfigured = null;
 
     // We only want to get the SharedPreferences once since it does an FS stat each time we get
     // it from the context.
@@ -545,7 +547,18 @@
     }
 
     @Override
-    protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
+    protected void onActivityResult(
+            final int requestCode, final int resultCode, final Intent data) {
+        if (requestCode == REQUEST_BIND_APPWIDGET) {
+            int appWidgetId = data != null ?
+                    data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1) : -1;
+            if (resultCode == RESULT_CANCELED) {
+                completeTwoStageWidgetDrop(RESULT_CANCELED, appWidgetId);
+            } else if (resultCode == RESULT_OK) {
+                addAppWidgetImpl(appWidgetId, mWidgetBeingBoundOrConfigured);
+            }
+            return;
+        }
         boolean delayExitSpringLoadedMode = false;
         boolean isWidgetDrop = (requestCode == REQUEST_PICK_APPWIDGET ||
                 requestCode == REQUEST_CREATE_APPWIDGET);
@@ -585,15 +598,16 @@
     }
 
     private void completeTwoStageWidgetDrop(final int resultCode, final int appWidgetId) {
-        CellLayout cellLayout = (CellLayout) mWorkspace.getChildAt(mWidgetBeingConfigured.screen);
+        CellLayout cellLayout =
+                (CellLayout) mWorkspace.getChildAt(mWidgetBeingBoundOrConfigured.screen);
         Runnable onCompleteRunnable = null;
         int animationType = 0;
 
         if (resultCode == RESULT_OK) {
             animationType = Workspace.COMPLETE_TWO_STAGE_WIDGET_DROP_ANIMATION;
             final AppWidgetHostView layout = mAppWidgetHost.createView(this, appWidgetId,
-                    mWidgetBeingConfigured.info);
-            mWidgetBeingConfigured.boundWidget = layout;
+                    mWidgetBeingBoundOrConfigured.info);
+            mWidgetBeingBoundOrConfigured.boundWidget = layout;
             onCompleteRunnable = new Runnable() {
                 @Override
                 public void run() {
@@ -613,10 +627,10 @@
                 }
             };
         }
-        mWorkspace.animateWidgetDrop(mWidgetBeingConfigured, cellLayout,
+        mWorkspace.animateWidgetDrop(mWidgetBeingBoundOrConfigured, cellLayout,
                 (DragView) mDragLayer.getAnimatedView(), onCompleteRunnable,
-                animationType, mWidgetBeingConfigured.boundWidget, true);
-        mWidgetBeingConfigured = null;
+                animationType, mWidgetBeingBoundOrConfigured.boundWidget, true);
+        mWidgetBeingBoundOrConfigured = null;
     }
 
     @Override
@@ -1541,7 +1555,7 @@
                 }
             }
             startActivityForResultSafely(intent, REQUEST_CREATE_APPWIDGET);
-            mWidgetBeingConfigured = info;
+            mWidgetBeingBoundOrConfigured = info;
         } else {
             // Otherwise just add it
             completeAddAppWidget(appWidgetId, info.container, info.screen, info.boundWidget, appWidget);
@@ -1605,11 +1619,19 @@
         int appWidgetId;
         if (hostView != null) {
             appWidgetId = hostView.getAppWidgetId();
+            addAppWidgetImpl(appWidgetId, info);
         } else {
             appWidgetId = getAppWidgetHost().allocateAppWidgetId();
-            AppWidgetManager.getInstance(this).bindAppWidgetId(appWidgetId, info.componentName);
+            mWidgetBeingBoundOrConfigured = info;
+            if (mAppWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId, info.componentName)) {
+                addAppWidgetImpl(appWidgetId, info);
+            } else {
+                Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_BIND);
+                intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
+                intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_PROVIDER, info.componentName);
+                startActivityForResult(intent, REQUEST_BIND_APPWIDGET);
+            }
         }
-        addAppWidgetImpl(appWidgetId, info);
     }
 
     void processShortcut(Intent intent) {
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java
index efe4711..37235e9 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -989,6 +989,9 @@
             final AppWidgetManager widgets = AppWidgetManager.getInstance(context);
             final boolean isSafeMode = manager.isSafeMode();
 
+            // Make sure the default workspace is loaded, if needed
+            mApp.getLauncherProvider().loadDefaultFavoritesIfNecessary();
+
             sWorkspaceItems.clear();
             sAppWidgets.clear();
             sFolders.clear();
diff --git a/src/com/android/launcher2/LauncherProvider.java b/src/com/android/launcher2/LauncherProvider.java
index c8fb09e..297c097 100644
--- a/src/com/android/launcher2/LauncherProvider.java
+++ b/src/com/android/launcher2/LauncherProvider.java
@@ -16,13 +16,6 @@
 
 package com.android.launcher2;
 
-import com.android.internal.util.XmlUtils;
-import com.android.launcher.R;
-import com.android.launcher2.LauncherSettings.Favorites;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
 import android.app.SearchManager;
 import android.appwidget.AppWidgetHost;
 import android.appwidget.AppWidgetManager;
@@ -34,6 +27,7 @@
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.Intent;
+import android.content.SharedPreferences;
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
@@ -54,6 +48,12 @@
 import android.util.Log;
 import android.util.Xml;
 
+import com.android.launcher.R;
+import com.android.launcher2.LauncherSettings.Favorites;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
 import java.io.IOException;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
@@ -71,6 +71,8 @@
 
     static final String TABLE_FAVORITES = "favorites";
     static final String PARAMETER_NOTIFY = "notify";
+    static final String DB_CREATED_BUT_DEFAULT_WORKSPACE_NOT_LOADED =
+            "DB_CREATED_BUT_DEFAULT_WORKSPACE_NOT_LOADED";
 
     /**
      * {@link Uri} triggered at any registered {@link android.database.ContentObserver} when
@@ -197,6 +199,18 @@
         return mOpenHelper.generateNewId();
     }
 
+    public void loadDefaultFavoritesIfNecessary() {
+        String spKey = LauncherApplication.getSharedPreferencesKey();
+        SharedPreferences sp = getContext().getSharedPreferences(spKey, Context.MODE_PRIVATE);
+        if (sp.getBoolean(DB_CREATED_BUT_DEFAULT_WORKSPACE_NOT_LOADED, false)) {
+            // Populate favorites table with initial favorites
+            SharedPreferences.Editor editor = sp.edit();
+            editor.remove(DB_CREATED_BUT_DEFAULT_WORKSPACE_NOT_LOADED);
+            mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(), R.xml.default_workspace);
+            editor.commit();
+        }
+    }
+
     private static class DatabaseHelper extends SQLiteOpenHelper {
         private static final String TAG_FAVORITES = "favorites";
         private static final String TAG_FAVORITE = "favorite";
@@ -267,11 +281,19 @@
             }
 
             if (!convertDatabase(db)) {
-                // Populate favorites table with initial favorites
-                loadFavorites(db, R.xml.default_workspace);
+                // Set a shared pref so that we know we need to load the default workspace later
+                setFlagToLoadDefaultWorkspaceLater();
             }
         }
 
+        private void setFlagToLoadDefaultWorkspaceLater() {
+            String spKey = LauncherApplication.getSharedPreferencesKey();
+            SharedPreferences sp = mContext.getSharedPreferences(spKey, Context.MODE_PRIVATE);
+            SharedPreferences.Editor editor = sp.edit();
+            editor.putBoolean(DB_CREATED_BUT_DEFAULT_WORKSPACE_NOT_LOADED, true);
+            editor.commit();
+        }
+
         private boolean convertDatabase(SQLiteDatabase db) {
             if (LOGD) Log.d(TAG, "converting database from an older format, but not onUpgrade");
             boolean converted = false;
@@ -684,15 +706,18 @@
                         db.update(TABLE_FAVORITES, values, updateWhere, null);
 
                         if (favoriteType == Favorites.ITEM_TYPE_WIDGET_CLOCK) {
-                            appWidgetManager.bindAppWidgetId(appWidgetId,
+                            // TODO: check return value
+                            appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId,
                                     new ComponentName("com.android.alarmclock",
                                     "com.android.alarmclock.AnalogAppWidgetProvider"));
                         } else if (favoriteType == Favorites.ITEM_TYPE_WIDGET_PHOTO_FRAME) {
-                            appWidgetManager.bindAppWidgetId(appWidgetId,
+                            // TODO: check return value
+                            appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId,
                                     new ComponentName("com.android.camera",
                                     "com.android.camera.PhotoAppWidgetProvider"));
                         } else if (favoriteType == Favorites.ITEM_TYPE_WIDGET_SEARCH) {
-                            appWidgetManager.bindAppWidgetId(appWidgetId,
+                            // TODO: check return value
+                            appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId,
                                     getSearchWidgetProvider());
                         }
                     } catch (RuntimeException ex) {
@@ -711,6 +736,24 @@
             }
         }
 
+        private static final void beginDocument(XmlPullParser parser, String firstElementName)
+                throws XmlPullParserException, IOException {
+            int type;
+            while ((type = parser.next()) != parser.START_TAG
+                    && type != parser.END_DOCUMENT) {
+                ;
+            }
+
+            if (type != parser.START_TAG) {
+                throw new XmlPullParserException("No start tag found");
+            }
+
+            if (!parser.getName().equals(firstElementName)) {
+                throw new XmlPullParserException("Unexpected start tag: found " + parser.getName() +
+                        ", expected " + firstElementName);
+            }
+        }
+
         /**
          * Loads the default set of favorite packages from an xml file.
          *
@@ -729,7 +772,7 @@
             try {
                 XmlResourceParser parser = mContext.getResources().getXml(workspaceResourceId);
                 AttributeSet attrs = Xml.asAttributeSet(parser);
-                XmlUtils.beginDocument(parser, TAG_FAVORITES);
+                beginDocument(parser, TAG_FAVORITES);
 
                 final int depth = parser.getDepth();
 
@@ -989,7 +1032,8 @@
 
                 allocatedAppWidgets = true;
 
-                appWidgetManager.bindAppWidgetId(appWidgetId, cn);
+                // TODO: need to check return value
+                appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId, cn);
             } catch (RuntimeException ex) {
                 Log.e(TAG, "Problem allocating appWidgetId", ex);
             }
diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java
index 1fc39f6..83b688d 100644
--- a/src/com/android/launcher2/PagedView.java
+++ b/src/com/android/launcher2/PagedView.java
@@ -50,7 +50,7 @@
  * An abstraction of the original Workspace which supports browsing through a
  * sequential list of "pages"
  */
-public abstract class PagedView extends ViewGroup {
+public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarchyChangeListener {
     private static final String TAG = "PagedView";
     private static final boolean DEBUG = false;
     protected static final int INVALID_PAGE = -1;
@@ -132,7 +132,7 @@
     protected int mUnboundedScrollX;
     protected int[] mTempVisiblePagesRange = new int[2];
 
-    // mOverScrollX is equal to mScrollX when we're within the normal scroll range. Otherwise
+    // mOverScrollX is equal to getScrollX() when we're within the normal scroll range. Otherwise
     // it is equal to the scaled overscroll position. We use a separate value so as to prevent
     // the screens from continuing to translate beyond the normal bounds.
     protected int mOverScrollX;
@@ -158,7 +158,7 @@
     // to switch to a new page
     protected boolean mUsePagingTouchSlop = true;
 
-    // If true, the subclass should directly update mScrollX itself in its computeScroll method
+    // If true, the subclass should directly update scrollX itself in its computeScroll method
     // (SmoothPagedView does this)
     protected boolean mDeferScrollUpdate = false;
 
@@ -241,6 +241,7 @@
         mFlingThresholdVelocity = (int) (FLING_THRESHOLD_VELOCITY * mDensity);
         mMinFlingVelocity = (int) (MIN_FLING_VELOCITY * mDensity);
         mMinSnapVelocity = (int) (MIN_SNAP_VELOCITY * mDensity);
+        setOnHierarchyChangeListener(this);
     }
 
     public void setPageSwitchListener(PageSwitchListener pageSwitchListener) {
@@ -362,7 +363,7 @@
 
     @Override
     public void scrollBy(int x, int y) {
-        scrollTo(mUnboundedScrollX + x, mScrollY + y);
+        scrollTo(mUnboundedScrollX + x, getScrollY() + y);
     }
 
     @Override
@@ -392,8 +393,8 @@
     protected boolean computeScrollHelper() {
         if (mScroller.computeScrollOffset()) {
             // Don't bother scrolling if the page does not need to be moved
-            if (mScrollX != mScroller.getCurrX()
-                || mScrollY != mScroller.getCurrY()
+            if (getScrollX() != mScroller.getCurrX()
+                || getScrollY() != mScroller.getCurrY()
                 || mOverScrollX != mScroller.getCurrX()) {
                 scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
             }
@@ -417,7 +418,9 @@
             }
 
             // Notify the user when the page changes
-            if (AccessibilityManager.getInstance(getContext()).isEnabled()) {
+            AccessibilityManager accessibilityManager = (AccessibilityManager)
+                    getContext().getSystemService(Context.ACCESSIBILITY_SERVICE);
+            if (accessibilityManager.isEnabled()) {
                 AccessibilityEvent ev =
                     AccessibilityEvent.obtain(AccessibilityEvent.TYPE_VIEW_SCROLLED);
                 ev.getText().add(getCurrentPageDescription());
@@ -455,8 +458,8 @@
         int heightSize = MeasureSpec.getSize(heightMeasureSpec);
         int maxChildHeight = 0;
 
-        final int verticalPadding = mPaddingTop + mPaddingBottom;
-        final int horizontalPadding = mPaddingLeft + mPaddingRight;
+        final int verticalPadding = getPaddingTop() + getPaddingBottom();
+        final int horizontalPadding = getPaddingLeft() + getPaddingRight();
 
 
         // The children are given the same width and height as the workspace
@@ -514,7 +517,7 @@
 
     protected void scrollToNewPageWithoutMovingPages(int newCurrentPage) {
         int newX = getChildOffset(newCurrentPage) - getRelativeChildOffset(newCurrentPage);
-        int delta = newX - mScrollX;
+        int delta = newX - getScrollX();
 
         final int pageCount = getChildCount();
         for (int i = 0; i < pageCount; i++) {
@@ -545,7 +548,7 @@
         int heightSpec = MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY);
         requestLayout();
         measure(widthSpec, heightSpec);
-        layout(mLeft, mTop, mRight, mBottom);
+        layout(getLeft(), getTop(), getRight(), getBottom());
         for (int i = 0; i < childCount; i++) {
             final View child = getPageAt(i);
             child.setX(childrenX[i]);
@@ -569,7 +572,7 @@
         }
 
         if (DEBUG) Log.d(TAG, "PagedView.onLayout()");
-        final int verticalPadding = mPaddingTop + mPaddingBottom;
+        final int verticalPadding = getPaddingTop() + getPaddingBottom();
         final int childCount = getChildCount();
         int childLeft = 0;
         if (childCount > 0) {
@@ -595,7 +598,7 @@
             if (child.getVisibility() != View.GONE) {
                 final int childWidth = getScaledMeasuredWidth(child);
                 final int childHeight = child.getMeasuredHeight();
-                int childTop = mPaddingTop;
+                int childTop = getPaddingTop();
                 if (mCenterPagesVertically) {
                     childTop += ((getMeasuredHeight() - verticalPadding) - childHeight) / 2;
                 }
@@ -637,9 +640,7 @@
     }
 
     @Override
-    protected void onViewAdded(View child) {
-        super.onViewAdded(child);
-
+    public void onChildViewAdded(View parent, View child) {
         // This ensures that when children are added, they get the correct transforms / alphas
         // in accordance with any scroll effects.
         mForceScreenScrolled = true;
@@ -647,6 +648,10 @@
         invalidateCachedOffsets();
     }
 
+    @Override
+    public void onChildViewRemoved(View parent, View child) {
+    }
+
     protected void invalidateCachedOffsets() {
         int count = getChildCount();
         if (count == 0) {
@@ -691,8 +696,8 @@
         if (mChildRelativeOffsets != null && mChildRelativeOffsets[index] != -1) {
             return mChildRelativeOffsets[index];
         } else {
-            final int padding = mPaddingLeft + mPaddingRight;
-            final int offset = mPaddingLeft +
+            final int padding = getPaddingLeft() + getPaddingRight();
+            final int offset = getPaddingLeft() +
                     (getMeasuredWidth() - padding - getChildWidth(index)) / 2;
             if (mChildRelativeOffsets != null) {
                 mChildRelativeOffsets[index] = offset;
@@ -702,8 +707,8 @@
     }
 
     protected int getScaledRelativeChildOffset(int index) {
-        final int padding = mPaddingLeft + mPaddingRight;
-        final int offset = mPaddingLeft + (getMeasuredWidth() - padding -
+        final int padding = getPaddingLeft() + getPaddingRight();
+        final int offset = getPaddingLeft() + (getMeasuredWidth() - padding -
                 getScaledMeasuredWidth(getPageAt(index))) / 2;
         return offset;
     }
@@ -726,14 +731,15 @@
             int rightScreen = 0;
             View currPage = getPageAt(leftScreen);
             while (leftScreen < pageCount - 1 &&
-                    currPage.getX() + currPage.getWidth() - currPage.getPaddingRight() < mScrollX) {
+                    currPage.getX() + currPage.getWidth() -
+                    currPage.getPaddingRight() < getScrollX()) {
                 leftScreen++;
                 currPage = getPageAt(leftScreen);
             }
             rightScreen = leftScreen;
             currPage = getPageAt(rightScreen + 1);
             while (rightScreen < pageCount - 1 &&
-                    currPage.getX() - currPage.getPaddingLeft() < mScrollX + screenWidth) {
+                    currPage.getX() - currPage.getPaddingLeft() < getScrollX() + screenWidth) {
                 rightScreen++;
                 currPage = getPageAt(rightScreen + 1);
             }
@@ -748,8 +754,8 @@
     @Override
     protected void dispatchDraw(Canvas canvas) {
         int halfScreenSize = getMeasuredWidth() / 2;
-        // mOverScrollX is equal to mScrollX when we're within the normal scroll range. Otherwise
-        // it is equal to the scaled overscroll position.
+        // mOverScrollX is equal to getScrollX() when we're within the normal scroll range.
+        // Otherwise it is equal to the scaled overscroll position.
         int screenCenter = mOverScrollX + halfScreenSize;
 
         if (screenCenter != mLastScreenCenter || mForceScreenScrolled) {
@@ -770,8 +776,8 @@
                 final long drawingTime = getDrawingTime();
                 // Clip to the bounds
                 canvas.save();
-                canvas.clipRect(mScrollX, mScrollY, mScrollX + mRight - mLeft,
-                        mScrollY + mBottom - mTop);
+                canvas.clipRect(getScrollX(), getScrollY(), getScrollX() + getRight() - getLeft(),
+                        getScrollY() + getBottom() - getTop());
 
                 // On certain graphics drivers, if you draw to a off-screen buffer that's not
                 // used, it can lead to poor performance. We were running into this when
@@ -781,9 +787,7 @@
                 // View.INVISIBLE, preventing re-drawing of their hardware layer
                 for (int i = getChildCount() - 1; i >= 0; i--) {
                     final View v = getPageAt(i);
-
-                    if (leftScreen <= i && i <= rightScreen &&
-                            v.getAlpha() > ViewConfiguration.ALPHA_THRESHOLD) {
+                    if (leftScreen <= i && i <= rightScreen && v.getAlpha() > 0) {
                         v.setVisibility(VISIBLE);
                         drawChild(canvas, v, drawingTime);
                     } else {
@@ -1043,7 +1047,7 @@
                 mTotalMotionX += Math.abs(mLastMotionX - x);
                 mLastMotionX = x;
                 mLastMotionXRemainder = 0;
-                mTouchX = mScrollX;
+                mTouchX = getScrollX();
                 mSmoothingTime = System.nanoTime() / NANOTIME_DIV;
                 pageBeginMoving();
             }
@@ -1102,10 +1106,10 @@
         int overScrollAmount = (int) Math.round(f * screenSize);
         if (amount < 0) {
             mOverScrollX = overScrollAmount;
-            mScrollX = 0;
+            super.scrollTo(0, getScrollY());
         } else {
             mOverScrollX = mMaxScrollX + overScrollAmount;
-            mScrollX = mMaxScrollX;
+            super.scrollTo(mMaxScrollX, getScrollY());
         }
         invalidate();
     }
@@ -1126,10 +1130,10 @@
         int overScrollAmount = (int) Math.round(OVERSCROLL_DAMP_FACTOR * f * screenSize);
         if (amount < 0) {
             mOverScrollX = overScrollAmount;
-            mScrollX = 0;
+            super.scrollTo(0, getScrollY());
         } else {
             mOverScrollX = mMaxScrollX + overScrollAmount;
-            mScrollX = mMaxScrollX;
+            super.scrollTo(mMaxScrollX, getScrollY());
         }
         invalidate();
     }
@@ -1392,7 +1396,7 @@
     int getPageNearestToCenterOfScreen() {
         int minDistanceFromScreenCenter = Integer.MAX_VALUE;
         int minDistanceFromScreenCenterIndex = -1;
-        int screenCenter = mScrollX + (getMeasuredWidth() / 2);
+        int screenCenter = getScrollX() + (getMeasuredWidth() / 2);
         final int childCount = getChildCount();
         for (int i = 0; i < childCount; ++i) {
             View layout = (View) getPageAt(i);
@@ -1855,7 +1859,7 @@
 
     protected String getCurrentPageDescription() {
         int page = (mNextPage != INVALID_PAGE) ? mNextPage : mCurrentPage;
-        return String.format(mContext.getString(R.string.default_scroll_format),
+        return String.format(getContext().getString(R.string.default_scroll_format),
                 page + 1, getChildCount());
     }
 
diff --git a/src/com/android/launcher2/PagedViewCellLayout.java b/src/com/android/launcher2/PagedViewCellLayout.java
index 9e5452b..6f73e63 100644
--- a/src/com/android/launcher2/PagedViewCellLayout.java
+++ b/src/com/android/launcher2/PagedViewCellLayout.java
@@ -193,8 +193,8 @@
         int numHeightGaps = mCellCountY - 1;
 
         if (mOriginalWidthGap < 0 || mOriginalHeightGap < 0) {
-            int hSpace = widthSpecSize - mPaddingLeft - mPaddingRight;
-            int vSpace = heightSpecSize - mPaddingTop - mPaddingBottom;
+            int hSpace = widthSpecSize - getPaddingLeft() - getPaddingRight();
+            int vSpace = heightSpecSize - getPaddingTop() - getPaddingBottom();
             int hFreeSpace = hSpace - (mCellCountX * mOriginalCellWidth);
             int vFreeSpace = vSpace - (mCellCountY * mOriginalCellHeight);
             mWidthGap = Math.min(mMaxGap, numWidthGaps > 0 ? (hFreeSpace / numWidthGaps) : 0);
@@ -210,9 +210,9 @@
         int newWidth = widthSpecSize;
         int newHeight = heightSpecSize;
         if (widthSpecMode == MeasureSpec.AT_MOST) {
-            newWidth = mPaddingLeft + mPaddingRight + (mCellCountX * mCellWidth) +
+            newWidth = getPaddingLeft() + getPaddingRight() + (mCellCountX * mCellWidth) +
                 ((mCellCountX - 1) * mWidthGap);
-            newHeight = mPaddingTop + mPaddingBottom + (mCellCountY * mCellHeight) +
+            newHeight = getPaddingTop() + getPaddingBottom() + (mCellCountY * mCellHeight) +
                 ((mCellCountY - 1) * mHeightGap);
             setMeasuredDimension(newWidth, newHeight);
         }
@@ -221,11 +221,11 @@
         for (int i = 0; i < count; i++) {
             View child = getChildAt(i);
             int childWidthMeasureSpec =
-                MeasureSpec.makeMeasureSpec(newWidth - mPaddingLeft -
-                        mPaddingRight, MeasureSpec.EXACTLY);
+                MeasureSpec.makeMeasureSpec(newWidth - getPaddingLeft() -
+                        getPaddingRight(), MeasureSpec.EXACTLY);
             int childheightMeasureSpec =
-                MeasureSpec.makeMeasureSpec(newHeight - mPaddingTop -
-                        mPaddingBottom, MeasureSpec.EXACTLY);
+                MeasureSpec.makeMeasureSpec(newHeight - getPaddingTop() -
+                        getPaddingBottom(), MeasureSpec.EXACTLY);
             child.measure(childWidthMeasureSpec, childheightMeasureSpec);
         }
 
@@ -233,7 +233,7 @@
     }
 
     int getContentWidth() {
-        return getWidthBeforeFirstLayout() + mPaddingLeft + mPaddingRight;
+        return getWidthBeforeFirstLayout() + getPaddingLeft() + getPaddingRight();
     }
 
     int getContentHeight() {
@@ -255,8 +255,8 @@
         int count = getChildCount();
         for (int i = 0; i < count; i++) {
             View child = getChildAt(i);
-            child.layout(mPaddingLeft, mPaddingTop,
-                r - l - mPaddingRight, b - t - mPaddingBottom);
+            child.layout(getPaddingLeft(), getPaddingTop(),
+                r - l - getPaddingRight(), b - t - getPaddingBottom());
         }
     }
 
@@ -327,7 +327,7 @@
     public int estimateCellHSpan(int width) {
         // We don't show the next/previous pages any more, so we use the full width, minus the
         // padding
-        int availWidth = width - (mPaddingLeft + mPaddingRight);
+        int availWidth = width - (getPaddingLeft() + getPaddingRight());
 
         // We know that we have to fit N cells with N-1 width gaps, so we just juggle to solve for N
         int n = Math.max(1, (availWidth + mWidthGap) / (mCellWidth + mWidthGap));
@@ -342,7 +342,7 @@
     public int estimateCellVSpan(int height) {
         // The space for a page is the height - top padding (current page) - bottom padding (current
         // page)
-        int availHeight = height - (mPaddingTop + mPaddingBottom);
+        int availHeight = height - (getPaddingTop() + getPaddingBottom());
 
         // We know that we have to fit N cells with N-1 height gaps, so we juggle to solve for N
         int n = Math.max(1, (availHeight + mHeightGap) / (mCellHeight + mHeightGap));
@@ -354,8 +354,8 @@
     /** Returns an estimated center position of the cell at the specified index */
     public int[] estimateCellPosition(int x, int y) {
         return new int[] {
-                mPaddingLeft + (x * mCellWidth) + (x * mWidthGap) + (mCellWidth / 2),
-                mPaddingTop + (y * mCellHeight) + (y * mHeightGap) + (mCellHeight / 2)
+                getPaddingLeft() + (x * mCellWidth) + (x * mWidthGap) + (mCellWidth / 2),
+                getPaddingTop() + (y * mCellHeight) + (y * mHeightGap) + (mCellHeight / 2)
         };
     }
 
diff --git a/src/com/android/launcher2/SmoothPagedView.java b/src/com/android/launcher2/SmoothPagedView.java
index e6414d9..7e47f1a 100644
--- a/src/com/android/launcher2/SmoothPagedView.java
+++ b/src/com/android/launcher2/SmoothPagedView.java
@@ -175,7 +175,7 @@
                 final float e = (float) Math.exp((now - mSmoothingTime) / SMOOTHING_CONSTANT);
 
                 final float dx = mTouchX - mUnboundedScrollX;
-                scrollTo(Math.round(mUnboundedScrollX + dx * e), mScrollY);
+                scrollTo(Math.round(mUnboundedScrollX + dx * e), getScrollY());
                 mSmoothingTime = now;
 
                 // Keep generating points as long as we're more than 1px away from the target
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index d2f050c..dd2ced0 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -68,7 +68,7 @@
  */
 public class Workspace extends SmoothPagedView
         implements DropTarget, DragSource, DragScroller, View.OnTouchListener,
-        DragController.DragListener, LauncherTransitionable {
+        DragController.DragListener, LauncherTransitionable, ViewGroup.OnHierarchyChangeListener {
     private static final String TAG = "Launcher.Workspace";
 
     // Y rotation to apply to the workspace screens
@@ -322,6 +322,8 @@
         mDefaultPage = a.getInt(R.styleable.Workspace_defaultScreen, 1);
         a.recycle();
 
+        setOnHierarchyChangeListener(this);
+
         LauncherModel.updateWorkspaceLayoutCells(cellCountX, cellCountY);
         setHapticFeedbackEnabled(false);
 
@@ -417,8 +419,7 @@
     }
 
     @Override
-    protected void onViewAdded(View child) {
-        super.onViewAdded(child);
+    public void onChildViewAdded(View parent, View child) {
         if (!(child instanceof CellLayout)) {
             throw new IllegalArgumentException("A Workspace can only have CellLayout children.");
         }
@@ -428,6 +429,10 @@
         cl.enableHardwareLayers();
     }
 
+    @Override
+    public void onChildViewRemoved(View parent, View child) {
+    }
+
     /**
      * @return The open folder on the current screen, or null if there is none
      */
@@ -824,7 +829,7 @@
         int scrollRange = getScrollRange();
 
         // Again, we adjust the wallpaper offset to be consistent between values of mLayoutScale
-        float adjustedScrollX = Math.max(0, Math.min(mScrollX, mMaxScrollX));
+        float adjustedScrollX = Math.max(0, Math.min(getScrollX(), mMaxScrollX));
         adjustedScrollX *= mWallpaperScrollRatio;
         mLayoutScale = layoutScale;
 
@@ -1296,7 +1301,7 @@
         if (mBackground != null && mBackgroundAlpha > 0.0f && mDrawBackground) {
             int alpha = (int) (mBackgroundAlpha * 255);
             mBackground.setAlpha(alpha);
-            mBackground.setBounds(mScrollX, 0, mScrollX + getMeasuredWidth(),
+            mBackground.setBounds(getScrollX(), 0, getScrollX() + getMeasuredWidth(),
                     getMeasuredHeight());
             mBackground.draw(canvas);
         }
@@ -1318,9 +1323,9 @@
             final int pageHeight = getChildAt(0).getHeight();
 
             // Set the height of the outline to be the height of the page
-            final int offset = (height - pageHeight - mPaddingTop - mPaddingBottom) / 2;
-            final int paddingTop = mPaddingTop + offset;
-            final int paddingBottom = mPaddingBottom + offset;
+            final int offset = (height - pageHeight - getPaddingTop() - getPaddingBottom()) / 2;
+            final int paddingTop = getPaddingTop() + offset;
+            final int paddingBottom = getPaddingBottom() + offset;
 
             final int page = (mNextPage != INVALID_PAGE ? mNextPage : mCurrentPage);
             final CellLayout leftPage = (CellLayout) getChildAt(page - 1);
@@ -1328,13 +1333,13 @@
 
             if (leftPage != null && leftPage.getIsDragOverlapping()) {
                 final Drawable d = getResources().getDrawable(R.drawable.page_hover_left_holo);
-                d.setBounds(mScrollX, paddingTop, mScrollX + d.getIntrinsicWidth(),
+                d.setBounds(getScrollX(), paddingTop, getScrollX() + d.getIntrinsicWidth(),
                         height - paddingBottom);
                 d.draw(canvas);
             } else if (rightPage != null && rightPage.getIsDragOverlapping()) {
                 final Drawable d = getResources().getDrawable(R.drawable.page_hover_right_holo);
-                d.setBounds(mScrollX + width - d.getIntrinsicWidth(), paddingTop, mScrollX + width,
-                        height - paddingBottom);
+                d.setBounds(getScrollX() + width - d.getIntrinsicWidth(), paddingTop,
+                        getScrollX() + width, height - paddingBottom);
                 d.draw(canvas);
             }
         }
@@ -1722,6 +1727,7 @@
                     }
                 }
             }
+            buildPageHardwareLayers();
             anim.setStartDelay(delay);
         }
 
@@ -2545,12 +2551,12 @@
            v.getMatrix().invert(mTempInverseMatrix);
            cachedInverseMatrix = mTempInverseMatrix;
        }
-       int scrollX = mScrollX;
+       int scrollX = getScrollX();
        if (mNextPage != INVALID_PAGE) {
            scrollX = mScroller.getFinalX();
        }
        xy[0] = xy[0] + scrollX - v.getLeft();
-       xy[1] = xy[1] + mScrollY - v.getTop();
+       xy[1] = xy[1] + getScrollY() - v.getTop();
        cachedInverseMatrix.mapPoints(xy);
    }
 
@@ -2576,12 +2582,12 @@
     */
    void mapPointFromChildToSelf(View v, float[] xy) {
        v.getMatrix().mapPoints(xy);
-       int scrollX = mScrollX;
+       int scrollX = getScrollX();
        if (mNextPage != INVALID_PAGE) {
            scrollX = mScroller.getFinalX();
        }
        xy[0] -= (scrollX - v.getLeft());
-       xy[1] -= (mScrollY - v.getTop());
+       xy[1] -= (getScrollY() - v.getTop());
    }
 
    static private float squaredDistance(float[] point1, float[] point2) {
@@ -3713,7 +3719,7 @@
     @Override
     protected String getCurrentPageDescription() {
         int page = (mNextPage != INVALID_PAGE) ? mNextPage : mCurrentPage;
-        return String.format(mContext.getString(R.string.workspace_scroll_format),
+        return String.format(getContext().getString(R.string.workspace_scroll_format),
                 page + 1, getChildCount());
     }