merge in jb-release history after reset to master
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 60888d3..0d57986 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Geen meer spasie op tuisskerm nie."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Kortpad \"<xliff:g id="NAME">%s</xliff:g>\" is verwyder."</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index cf9e511..5b8578a 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="8365249326091984698">"በዚህ መነሻ ማያ ላይ ምንም ቦታ የለም።"</string>
+ <string name="out_of_space" msgid="3056555298801463098">"የመነሻ ማያ ገጾችህ ላይ ተጨማሪ ቦታ የለም።"</string>
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"ይህ ፍርግም ለማስቀመጫው በጣም ትልቅ ነው።"</string>
<string name="shortcut_installed" msgid="7071557296331322355">"አቋራጭ\"<xliff:g id="NAME">%s</xliff:g> \"ተፈጥሯል።"</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"አቋራጭ \"<xliff:g id="NAME">%s</xliff:g>\" ተወግዶ ነበር።"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 16ba2bf..1c2cddc 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -40,7 +40,10 @@
<string name="group_shortcuts" msgid="9133529424900391877">"الاختصارات"</string>
<string name="group_widgets" msgid="6704978494073105844">"الأدوات"</string>
<string name="group_wallpapers" msgid="1568191644272224858">"الخلفيات"</string>
- <string name="out_of_space" msgid="8365249326091984698">"ليس هناك مساحة أخرى في هذه الشاشة الرئيسية."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"حجم هذه الأداة كبير للغاية بحيث لا يتسع له الموقع المهم."</string>
<string name="shortcut_installed" msgid="7071557296331322355">"تم إنشاء الاختصار \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"تمت إزالة الاختصار \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 60ecc26..cf308eb 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -40,7 +40,10 @@
<string name="group_shortcuts" msgid="9133529424900391877">"Хуткі доступ"</string>
<string name="group_widgets" msgid="6704978494073105844">"Віджэты"</string>
<string name="group_wallpapers" msgid="1568191644272224858">"Шпалеры"</string>
- <string name="out_of_space" msgid="8365249326091984698">"На Галоўнай старонцы больш няма месца."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"Гэты віджэт занадта вялікі для hotseat."</string>
<string name="shortcut_installed" msgid="7071557296331322355">"Створаны цэтлік \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Цэтлік \"<xliff:g id="NAME">%s</xliff:g>\" быў выдалены."</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index ffb5597..5103054 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -40,7 +40,10 @@
<string name="group_shortcuts" msgid="9133529424900391877">"Преки пътища"</string>
<string name="group_widgets" msgid="6704978494073105844">"Приспособления"</string>
<string name="group_wallpapers" msgid="1568191644272224858">"Тапети"</string>
- <string name="out_of_space" msgid="8365249326091984698">"На този начален екран няма повече място."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"Това приспособление е твърде голямо за трамплина."</string>
<string name="shortcut_installed" msgid="7071557296331322355">"Прекият път за „<xliff:g id="NAME">%s</xliff:g>“ бе създаден."</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Прекият път към „<xliff:g id="NAME">%s</xliff:g>“ бе премахнат."</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index b525dcf..c35e6a1 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Ja no queda espai en aquesta pantalla Inici."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"S\'ha eliminat 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 f2d972a..f06616f 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Na této ploše již není místo."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Zástupce <xliff:g id="NAME">%s</xliff:g> byl odebrán."</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 43e0be0..b595f12 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Der er ikke mere plads på Startskærmen."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Genvejen \"<xliff:g id="NAME">%s</xliff:g>\" blev fjernet."</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 1481540..6e3446a 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Auf dem Startbildschirm ist kein Platz mehr vorhanden."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"\"<xliff:g id="NAME">%s</xliff:g>\"-Verknüpfung wurde entfernt."</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 9eb1e9a..82807f4 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -40,7 +40,10 @@
<string name="group_shortcuts" msgid="9133529424900391877">"Συντομεύσεις"</string>
<string name="group_widgets" msgid="6704978494073105844">"Γραφικά στοιχεία"</string>
<string name="group_wallpapers" msgid="1568191644272224858">"Ταπετσαρίες"</string>
- <string name="out_of_space" msgid="8365249326091984698">"Δεν υπάρχει χώρος σε αυτήν την αρχική οθόνη."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"Αυτό το γραφικό στοιχείο είναι πολύ μεγάλο για το hotseat."</string>
<string name="shortcut_installed" msgid="7071557296331322355">"Δημιουργήθηκε η συντόμευση \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Η συντόμευση \"<xliff:g id="NAME">%s</xliff:g>\" καταργήθηκε."</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index f00820d..7e4a327 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="8365249326091984698">"No more room on this Home screen."</string>
+ <string name="out_of_space" msgid="3056555298801463098">"No more room on your Home screens."</string>
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Shortcut \"<xliff:g id="NAME">%s</xliff:g>\" was removed."</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 23b266f..d1ed50d 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"No hay más espacio en esta pantalla de la página principal"</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"El acceso directo \"<xliff:g id="NAME">%s</xliff:g>\" ha sido eliminado."</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 4458782..bfdfba2 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"No queda espacio en el escritorio."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Se ha eliminado 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 7193149..9e3be92 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Sellel avalehel pole enam ruumi."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Otsetee „<xliff:g id="NAME">%s</xliff:g>” eemaldatud."</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index b596614..7e3f514 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -40,7 +40,10 @@
<string name="group_shortcuts" msgid="9133529424900391877">"میانبرها"</string>
<string name="group_widgets" msgid="6704978494073105844">"ابزارک ها"</string>
<string name="group_wallpapers" msgid="1568191644272224858">"تصاویر زمینه"</string>
- <string name="out_of_space" msgid="8365249326091984698">"اتاق دیگری در این صفحه اصلی موجود نیست."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"این ابزارک بیش از حد برای صندلی داغ بزرگ است."</string>
<string name="shortcut_installed" msgid="7071557296331322355">"میانبر \"<xliff:g id="NAME">%s</xliff:g>\" ایجاد شد."</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"میانبر \"<xliff:g id="NAME">%s</xliff:g>\" حذف شد."</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index c1670d8..45b2b7f 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Etusivulla ei ole enää tilaa."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Pikakuvake <xliff:g id="NAME">%s</xliff:g> poistettiin."</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 6fe1083..3010b6f 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Plus d\'espace libre sur l\'écran d\'accueil."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Le raccourci \"<xliff:g id="NAME">%s</xliff:g>\" a été supprimé."</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index d44f9c8..4b7b650 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -40,7 +40,10 @@
<string name="group_shortcuts" msgid="9133529424900391877">"शॉर्टकट"</string>
<string name="group_widgets" msgid="6704978494073105844">"विजेट"</string>
<string name="group_wallpapers" msgid="1568191644272224858">"वॉलपेपर"</string>
- <string name="out_of_space" msgid="8365249326091984698">"इस होम स्क्रीन पर और स्थान नहीं है."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"हॉटसीट के लिए यह विजेट बहुत बड़ा है."</string>
<string name="shortcut_installed" msgid="7071557296331322355">"\"<xliff:g id="NAME">%s</xliff:g>\" शार्टकट बना दिया गया."</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"\"<xliff:g id="NAME">%s</xliff:g>\" शॉर्टकट हटाया गया."</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index a588d5c..f926333 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Na ovom početnom zaslonu više nema mjesta."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Prečac za \"<xliff:g id="NAME">%s</xliff:g>\" je uklonjen."</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 1faa884..62ff7c4 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Nincs több hely ezen a főoldalon."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"A(z) \"<xliff:g id="NAME">%s</xliff:g>\" parancsikon eltávolításra került."</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index dd93a57..69e8e33 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Tidak ada ruang lagi pada layar Utama ini."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Pintasan \"<xliff:g id="NAME">%s</xliff:g>\" telah dihapus."</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 119102c..7d80da6 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Spazio nella schermata Home esaurito."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"La scorciatoia \"<xliff:g id="NAME">%s</xliff:g>\" è stata rimossa."</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 75cda09..d321f08 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="8365249326091984698">"אין עוד מקום במסך דף הבית הזה."</string>
+ <string name="out_of_space" msgid="3056555298801463098">"אין יותר מקום במסכי דף הבית."</string>
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"Widget זה גדול מדי עבור אזור העגינה."</string>
<string name="shortcut_installed" msgid="7071557296331322355">"הקיצור \'<xliff:g id="NAME">%s</xliff:g>\' נוצר."</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"הקיצור \'<xliff:g id="NAME">%s</xliff:g>\' הוסר."</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 87ef7c8..ede6c87 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -40,7 +40,10 @@
<string name="group_shortcuts" msgid="9133529424900391877">"ショートカット"</string>
<string name="group_widgets" msgid="6704978494073105844">"ウィジェット"</string>
<string name="group_wallpapers" msgid="1568191644272224858">"壁紙"</string>
- <string name="out_of_space" msgid="8365249326091984698">"ホーム画面に空きスペースがありません。"</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"このウィジェットはホットシートには大きすぎます。"</string>
<string name="shortcut_installed" msgid="7071557296331322355">"ショートカット「<xliff:g id="NAME">%s</xliff:g>」を作成しました。"</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"ショートカット「<xliff:g id="NAME">%s</xliff:g>」を削除しました。"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 6447f13..6783d78 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -40,7 +40,10 @@
<string name="group_shortcuts" msgid="9133529424900391877">"바로가기"</string>
<string name="group_widgets" msgid="6704978494073105844">"위젯"</string>
<string name="group_wallpapers" msgid="1568191644272224858">"배경화면"</string>
- <string name="out_of_space" msgid="8365249326091984698">"홈 화면에 더 이상 공간이 없습니다."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"이 위젯은 핫시트에 너무 큽니다."</string>
<string name="shortcut_installed" msgid="7071557296331322355">"바로가기(\'<xliff:g id="NAME">%s</xliff:g>\')가 생성되었습니다."</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"바로가기(\'<xliff:g id="NAME">%s</xliff:g>\')가 삭제되었습니다."</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 6c19242..93a2c7d 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Šiame pagrindiniame ekrane vietos nebėra."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Spartusis klavišas „<xliff:g id="NAME">%s</xliff:g>“ pašalintas."</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 90850ae..7d20fa4 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Šajā sākuma ekrānā vairs nav vietas."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Saīsne “<xliff:g id="NAME">%s</xliff:g>” tika noņemta."</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index cdcd341..9bac5f3 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Tiada lagi ruang pada skrin Utama ini"</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Pintasan \"<xliff:g id="NAME">%s</xliff:g>\" telah dialih keluar."</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index f3a7240..a334feb 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Ikke nok plass på skrivebordet."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Fjernet snarveien «<xliff:g id="NAME">%s</xliff:g>»."</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 28edf47..5c4a80e 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Er is geen ruimte meer op dit startscherm."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Snelkoppeling \'<xliff:g id="NAME">%s</xliff:g>\' is verwijderd."</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 3340fa3..a087c3f 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Brak miejsca na tej stronie głównej"</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Skrót „<xliff:g id="NAME">%s</xliff:g>” został usunięty."</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index ea407b7..43e7adb 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Não existe espaço suficiente neste ecrã principal."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"O atalho \"<xliff:g id="NAME">%s</xliff:g>\" foi removido."</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index a623510..ec78357 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Não há mais espaço nesta tela da Página inicial."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"O atalho \"<xliff:g id="NAME">%s</xliff:g>\" foi removido."</string>
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index f8f8492..4048e63 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -48,7 +48,10 @@
<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>
- <string name="out_of_space" msgid="8365249326091984698">"Nagin spazi liber sin il visur da partenza."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<!-- no translation found for invalid_hotseat_item (6545340627805449250) -->
<skip />
<string name="shortcut_installed" msgid="7071557296331322355">"\"Creà ina scursanida \"\"<xliff:g id="NAME">%s</xliff:g>\"\".\""</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 2d3a018..b0f6422 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Niciun spaţiu rămas pe acest Ecran de pornire."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Comanda rapidă „<xliff:g id="NAME">%s</xliff:g>” a fost eliminată."</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 0394a04..db42105 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -40,7 +40,10 @@
<string name="group_shortcuts" msgid="9133529424900391877">"Ярлыки"</string>
<string name="group_widgets" msgid="6704978494073105844">"Виджеты"</string>
<string name="group_wallpapers" msgid="1568191644272224858">"Обои"</string>
- <string name="out_of_space" msgid="8365249326091984698">"На этом экране всё занято."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"Виджет слишком велик для слота."</string>
<string name="shortcut_installed" msgid="7071557296331322355">"Ярлык \"<xliff:g id="NAME">%s</xliff:g>\" создан"</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Ярлык \"<xliff:g id="NAME">%s</xliff:g>\" удален."</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index b5f8814..2497826 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Na tejto ploche už nie je miesto"</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Odkaz <xliff:g id="NAME">%s</xliff:g> bol odstránený."</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index c9b2e04..5131b4b 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Na tem začetnem zaslonu ni več prostora."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Bližnjica »<xliff:g id="NAME">%s</xliff:g>« je bila odstranjena."</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 5dbfeab..043687e 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -40,7 +40,10 @@
<string name="group_shortcuts" msgid="9133529424900391877">"Пречице"</string>
<string name="group_widgets" msgid="6704978494073105844">"Виџети"</string>
<string name="group_wallpapers" msgid="1568191644272224858">"Позадине"</string>
- <string name="out_of_space" msgid="8365249326091984698">"Нема више простора на овом почетном екрану."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"Овај виџет је превелики за траку актуелности."</string>
<string name="shortcut_installed" msgid="7071557296331322355">"Пречица „<xliff:g id="NAME">%s</xliff:g>“ је направљена."</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Пречица „<xliff:g id="NAME">%s</xliff:g>“ је уклоњена."</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 9026922..b241e94 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Det finns inte plats för mer på den här startsidan."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Genvägen \"<xliff:g id="NAME">%s</xliff:g>\" har tagits bort."</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 1e928ed..abf2649 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Hakuna nafasi katika skrini hii ya nyumbani."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Njia ya mkato ya \"<xliff:g id="NAME">%s</xliff:g>\" iliondolewa."</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 3bcc144..e228b45 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="8365249326091984698">"ไม่มีที่ว่างในหน้าจอหลักนี้"</string>
+ <string name="out_of_space" msgid="3056555298801463098">"ไม่มีที่ว่างในหน้าจอหลักของคุณ"</string>
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"วิดเจ็ตนี้มีขนาดใหญ่เกินไปสำหรับ hotseat"</string>
<string name="shortcut_installed" msgid="7071557296331322355">"สร้างทางลัด \"<xliff:g id="NAME">%s</xliff:g>\" แล้ว"</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"ทางลัด \"<xliff:g id="NAME">%s</xliff:g>\" ถูกนำออกแล้ว"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index e315cd8..35267bc 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Wala nang lugar sa Home screen na ito."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Inalis 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 fef4df5..d10530c 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Bu Ana Sayfada yer yok."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"\"<xliff:g id="NAME">%s</xliff:g>\" kısayolu kaldırıldı."</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 0ee1529..cbd10ed 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -40,7 +40,10 @@
<string name="group_shortcuts" msgid="9133529424900391877">"Ярлики"</string>
<string name="group_widgets" msgid="6704978494073105844">"Віджети"</string>
<string name="group_wallpapers" msgid="1568191644272224858">"Фонові мал."</string>
- <string name="out_of_space" msgid="8365249326091984698">"Немає більше місця на гол. екрані."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"Цей віджет завеликий для Hotseat."</string>
<string name="shortcut_installed" msgid="7071557296331322355">"Ярлик \"<xliff:g id="NAME">%s</xliff:g>\" створено."</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Ярлик \"<xliff:g id="NAME">%s</xliff:g>\" видалено."</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 544c8a4..16a37fa 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -40,7 +40,10 @@
<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="8365249326091984698">"Không còn khoảng trống trên Màn hình chính này."</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Lối tắt \"<xliff:g id="NAME">%s</xliff:g>\" đã bị xóa."</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index ad38b9b..3f9d08f 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -40,7 +40,10 @@
<string name="group_shortcuts" msgid="9133529424900391877">"快捷方式"</string>
<string name="group_widgets" msgid="6704978494073105844">"窗口小部件"</string>
<string name="group_wallpapers" msgid="1568191644272224858">"壁纸"</string>
- <string name="out_of_space" msgid="8365249326091984698">"此主屏幕上已没有空间。"</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"该窗口小部件太大,超出基座区域可用空间。"</string>
<string name="shortcut_installed" msgid="7071557296331322355">"已创建“<xliff:g id="NAME">%s</xliff:g>”快捷方式。"</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"已删除“<xliff:g id="NAME">%s</xliff:g>”快捷方式。"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 8ad516e..9583086 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -40,7 +40,10 @@
<string name="group_shortcuts" msgid="9133529424900391877">"捷徑"</string>
<string name="group_widgets" msgid="6704978494073105844">"小工具"</string>
<string name="group_wallpapers" msgid="1568191644272224858">"桌布"</string>
- <string name="out_of_space" msgid="8365249326091984698">"主螢幕已無空間"</string>
+ <!-- no translation found for out_of_space (3056555298801463098) -->
+ <skip />
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<string name="invalid_hotseat_item" msgid="6545340627805449250">"這個小工具過大,超出可用的空間。"</string>
<string name="shortcut_installed" msgid="7071557296331322355">"已建立「<xliff:g id="NAME">%s</xliff:g>」捷徑。"</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"已移除「<xliff:g id="NAME">%s</xliff:g>」捷徑。"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index a68675d..83bcbdc 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="8365249326091984698">"Asisekho isikhala kulesi sikrini Sasekhaya."</string>
+ <string name="out_of_space" msgid="3056555298801463098">"Akusenagumbi ezikrinini zakho zekhaya."</string>
+ <!-- no translation found for hotseat_out_of_space (6304886797358479361) -->
+ <skip />
<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>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"Isinqamuleli \"<xliff:g id="NAME">%s</xliff:g>\" sikhishiwe."</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 509a670..f707c8c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -83,6 +83,8 @@
<string name="group_wallpapers">Wallpapers</string>
<!-- Error message when user has filled a home screen, possibly not used -->
<string name="out_of_space">No more room on your Home screens.</string>
+ <!-- Error message when user has filled the hotseat -->
+ <string name="hotseat_out_of_space">No more room on the hotseat.</string>
<!-- Error message when user tries to drop an invalid item on the hotseat -->
<string name="invalid_hotseat_item">This widget is too large for the hotseat.</string>
<!-- Message displayed when a shortcut is created by an external application -->
diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index 039ee8a..840ec45 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -791,7 +791,7 @@
}
}
if (showOutOfSpaceMessage) {
- mLauncher.showOutOfSpaceMessage();
+ mLauncher.showOutOfSpaceMessage(false);
}
d.deferDragViewCleanupPostAnimation = false;
@@ -1107,6 +1107,8 @@
bitmapWidth = drawable.getIntrinsicWidth();
bitmapHeight = drawable.getIntrinsicHeight();
} else {
+ if (cellHSpan < 1) cellHSpan = 1;
+ if (cellVSpan < 1) cellVSpan = 1;
// Determine the size of the bitmap for the preview image we will generate
// TODO: This actually uses the apps customize cell layout params, where as we make want
// the Workspace params for more accuracy.
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index 3b77f35..e8d5c19 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -18,8 +18,6 @@
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
-import android.animation.ObjectAnimator;
-import android.animation.PropertyValuesHolder;
import android.animation.TimeInterpolator;
import android.animation.ValueAnimator;
import android.animation.ValueAnimator.AnimatorUpdateListener;
@@ -129,12 +127,15 @@
private HashMap<CellLayout.LayoutParams, Animator> mReorderAnimators = new
HashMap<CellLayout.LayoutParams, Animator>();
+ private HashMap<View, ReorderHintAnimation>
+ mShakeAnimators = new HashMap<View, ReorderHintAnimation>();
+
+ private boolean mItemPlacementDirty = false;
// When a drag operation is in progress, holds the nearest cell to the touch point
private final int[] mDragCell = new int[2];
private boolean mDragging = false;
- private boolean mItemLocationsDirty = false;
private TimeInterpolator mEaseOutInterpolator;
private ShortcutAndWidgetContainer mShortcutsAndWidgets;
@@ -147,12 +148,17 @@
public static final int MODE_ON_DROP = 1;
public static final int MODE_ON_DROP_EXTERNAL = 2;
public static final int MODE_ACCEPT_DROP = 3;
- private static final boolean DESTRUCTIVE_REORDER = true;
+ private static final boolean DESTRUCTIVE_REORDER = false;
private static final boolean DEBUG_VISUALIZE_OCCUPIED = false;
+ private static final float REORDER_HINT_MAGNITUDE = 0.27f;
+ private static final int REORDER_ANIMATION_DURATION = 150;
+ private float mReorderHintAnimationMagnitude;
+
private ArrayList<View> mIntersectingViews = new ArrayList<View>();
private Rect mOccupiedRect = new Rect();
private int[] mDirectionVector = new int[2];
+ int[] mPreviousReorderDirection = new int[2];
public CellLayout(Context context) {
this(context, null);
@@ -197,6 +203,9 @@
mForegroundPadding =
res.getDimensionPixelSize(R.dimen.workspace_overscroll_drawable_padding);
+ mReorderHintAnimationMagnitude = (REORDER_HINT_MAGNITUDE *
+ res.getDimensionPixelSize(R.dimen.app_icon_size));
+
mNormalBackground.setFilterBitmap(true);
mActiveGlowBackground.setFilterBitmap(true);
@@ -611,8 +620,6 @@
(bubbleChild.getMeasuredWidth() | bubbleChild.getMeasuredHeight()) == 0) {
getShortcutsAndWidgets().measureChild(bubbleChild);
}
- int measuredWidth = bubbleChild.getMeasuredWidth();
- int measuredHeight = bubbleChild.getMeasuredHeight();
bubbleChild.setScaleX(scale);
bubbleChild.setScaleY(scale);
@@ -887,13 +894,28 @@
void regionToCenterPoint(int cellX, int cellY, int spanX, int spanY, int[] result) {
final int hStartPadding = getPaddingLeft();
final int vStartPadding = getPaddingTop();
-
result[0] = hStartPadding + cellX * (mCellWidth + mWidthGap) +
(spanX * mCellWidth + (spanX - 1) * mWidthGap) / 2;
result[1] = vStartPadding + cellY * (mCellHeight + mHeightGap) +
(spanY * mCellHeight + (spanY - 1) * mHeightGap) / 2;
}
+ /**
+ * Given a cell coordinate and span fills out a corresponding pixel rect
+ *
+ * @param cellX X coordinate of the cell
+ * @param cellY Y coordinate of the cell
+ * @param result Rect in which to write the result
+ */
+ void regionToRect(int cellX, int cellY, int spanX, int spanY, Rect result) {
+ final int hStartPadding = getPaddingLeft();
+ final int vStartPadding = getPaddingTop();
+ final int left = hStartPadding + cellX * (mCellWidth + mWidthGap);
+ final int top = vStartPadding + cellY * (mCellHeight + mHeightGap);
+ result.set(left, top, left + (spanX * mCellWidth + (spanX - 1) * mWidthGap),
+ top + (spanY * mCellHeight + (spanY - 1) * mHeightGap));
+ }
+
public float getDistanceFromCell(float x, float y, int[] cell) {
cellToCenterPoint(cell[0], cell[1], mTmpPoint);
float distance = (float) Math.sqrt( Math.pow(x - mTmpPoint[0], 2) +
@@ -1055,7 +1077,7 @@
occupied = mTmpOccupied;
}
- if (clc.indexOfChild(child) != -1 && !occupied[cellX][cellY]) {
+ if (clc.indexOfChild(child) != -1) {
final LayoutParams lp = (LayoutParams) child.getLayoutParams();
final ItemInfo info = (ItemInfo) child.getTag();
@@ -1101,8 +1123,8 @@
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float r = ((Float) animation.getAnimatedValue()).floatValue();
- lp.x = (int) (r * newX + (1 - r) * oldX);
- lp.y = (int) (r * newY + (1 - r) * oldY);
+ lp.x = (int) ((1 - r) * oldX + r * newX);
+ lp.y = (int) ((1 - r) * oldY + r * newY);
child.requestLayout();
}
});
@@ -1594,7 +1616,7 @@
// This method looks in the specified direction to see if there is an additional view
// immediately adjecent in that direction
private boolean addViewInDirection(ArrayList<View> views, Rect boundingRect, int[] direction,
- boolean[][] occupied, ItemConfiguration currentState) {
+ boolean[][] occupied, View dragView, ItemConfiguration currentState) {
boolean found = false;
int childCount = mShortcutsAndWidgets.getChildCount();
@@ -1619,7 +1641,7 @@
for (int i = 0; i < childCount; i++) {
View child = mShortcutsAndWidgets.getChildAt(i);
- if (views.contains(child)) continue;
+ if (views.contains(child) || child == dragView) continue;
CellAndSpan c = currentState.map.get(child);
LayoutParams lp = (LayoutParams) child.getLayoutParams();
@@ -1649,7 +1671,7 @@
}
private boolean addViewsToTempLocation(ArrayList<View> views, Rect rectOccupiedByPotentialDrop,
- int[] direction, boolean push, ItemConfiguration currentState) {
+ int[] direction, boolean push, View dragView, ItemConfiguration currentState) {
if (views.size() == 0) return true;
boolean success = false;
@@ -1668,7 +1690,7 @@
ArrayList<View> dup = (ArrayList<View>) views.clone();
// We try and expand the group of views in the direction vector passed, based on
// whether they are physically adjacent, ie. based on "push mechanics".
- while (push && addViewInDirection(dup, boundingRect, direction, mTmpOccupied,
+ while (push && addViewInDirection(dup, boundingRect, direction, mTmpOccupied, dragView,
currentState)) {
}
@@ -1731,11 +1753,11 @@
// Mark the desired location of the view currently being dragged.
if (ignoreView != null) {
CellAndSpan c = solution.map.get(ignoreView);
- c.x = cellX;
- c.y = cellY;
+ if (c != null) {
+ c.x = cellX;
+ c.y = cellY;
+ }
}
-
- //int childCount = mChildren.getChildCount();
Rect r0 = new Rect(cellX, cellY, cellX + spanX, cellY + spanY);
Rect r1 = new Rect();
for (View child: solution.map.keySet()) {
@@ -1752,13 +1774,15 @@
}
// We try to move the intersecting views as a block using the push mechanic
- if (addViewsToTempLocation(mIntersectingViews, mOccupiedRect, direction, true, solution)) {
+ if (addViewsToTempLocation(mIntersectingViews, mOccupiedRect, direction, true, ignoreView,
+ solution)) {
return true;
}
// Try the opposite direction
direction[0] *= -1;
direction[1] *= -1;
- if (addViewsToTempLocation(mIntersectingViews, mOccupiedRect, direction, true, solution)) {
+ if (addViewsToTempLocation(mIntersectingViews, mOccupiedRect, direction, true, ignoreView,
+ solution)) {
return true;
}
// Switch the direction back
@@ -1766,7 +1790,8 @@
direction[1] *= -1;
// Next we try moving the views as a block , but without requiring the push mechanic
- if (addViewsToTempLocation(mIntersectingViews, mOccupiedRect, direction, false, solution)) {
+ if (addViewsToTempLocation(mIntersectingViews, mOccupiedRect, direction, false, ignoreView,
+ solution)) {
return true;
}
@@ -1898,12 +1923,10 @@
for (int i = 0; i < childCount; i++) {
View child = mShortcutsAndWidgets.getChildAt(i);
if (child == dragView) continue;
- LayoutParams lp = (LayoutParams) child.getLayoutParams();
CellAndSpan c = solution.map.get(child);
if (c != null) {
- if (lp.cellX != c.x || lp.cellY != c.y) {
- animateChildToPosition(child, c.x, c.y, 150, 0, DESTRUCTIVE_REORDER, false);
- }
+ animateChildToPosition(child, c.x, c.y, REORDER_ANIMATION_DURATION, 0,
+ DESTRUCTIVE_REORDER, false);
markCellsForView(c.x, c.y, c.spanX, c.spanY, occupied, true);
}
}
@@ -1913,6 +1936,128 @@
}
}
+ // This method starts or changes the reorder hint animations
+ private void beginOrAdjustHintAnimations(ItemConfiguration solution, View dragView, int delay) {
+ int childCount = mShortcutsAndWidgets.getChildCount();
+ int timeForPriorAnimationToComplete = getMaxCompletionTime();
+ for (int i = 0; i < childCount; i++) {
+ View child = mShortcutsAndWidgets.getChildAt(i);
+ if (child == dragView) continue;
+ CellAndSpan c = solution.map.get(child);
+ LayoutParams lp = (LayoutParams) child.getLayoutParams();
+ if (c != null) {
+ ReorderHintAnimation rha = new ReorderHintAnimation(child, lp.cellX, lp.cellY,
+ c.x, c.y, c.spanX, c.spanY);
+ rha.animate(timeForPriorAnimationToComplete);
+ }
+ }
+ }
+
+ // Class which represents the reorder hint animations. These animations show that an item is
+ // in a temporary state, and hint at where the item will return to.
+ class ReorderHintAnimation {
+ View child;
+ float deltaX;
+ float deltaY;
+ private static final int DURATION = 140;
+ private int repeatCount;
+ private boolean cancelOnCycleComplete = false;
+ ValueAnimator va;
+
+ public ReorderHintAnimation(View child, int cellX0, int cellY0, int cellX1, int cellY1,
+ int spanX, int spanY) {
+ regionToCenterPoint(cellX0, cellY0, spanX, spanY, mTmpPoint);
+ final int x0 = mTmpPoint[0];
+ final int y0 = mTmpPoint[1];
+ regionToCenterPoint(cellX1, cellY1, spanX, spanY, mTmpPoint);
+ final int x1 = mTmpPoint[0];
+ final int y1 = mTmpPoint[1];
+ final int dX = x1 - x0;
+ final int dY = y1 - y0;
+ deltaX = 0;
+ deltaY = 0;
+ if (dX == dY && dX == 0) {
+ } else {
+ if (dY == 0) {
+ deltaX = mReorderHintAnimationMagnitude;
+ } else if (dX == 0) {
+ deltaY = mReorderHintAnimationMagnitude;
+ } else {
+ double angle = Math.atan( (float) (dY) / dX);
+ deltaX = (int) (Math.cos(angle) * mReorderHintAnimationMagnitude);
+ deltaY = (int) (Math.sin(angle) * mReorderHintAnimationMagnitude);
+ }
+ }
+ this.child = child;
+ }
+
+ void animate(int delay) {
+ if (mShakeAnimators.containsKey(child)) {
+ ReorderHintAnimation oldAnimation = mShakeAnimators.get(child);
+ oldAnimation.completeAnimation();
+ mShakeAnimators.remove(child);
+ }
+ if (deltaX == 0 && deltaY == 0) {
+ return;
+ }
+ va = ValueAnimator.ofFloat(0f, 1f);
+ va.setRepeatMode(ValueAnimator.REVERSE);
+ va.setRepeatCount(ValueAnimator.INFINITE);
+ va.setDuration(DURATION);
+ va.addUpdateListener(new AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ float r = ((Float) animation.getAnimatedValue()).floatValue();
+ float x = r * deltaX;
+ float y = r * deltaY;
+ child.setTranslationX(x);
+ child.setTranslationY(y);
+ }
+ });
+ va.addListener(new AnimatorListenerAdapter() {
+ public void onAnimationRepeat(Animator animation) {
+ repeatCount++;
+ // We make sure to end only after a full period
+ if (cancelOnCycleComplete && repeatCount % 2 == 0) {
+ va.cancel();
+ }
+ }
+ });
+ va.setStartDelay(Math.max(REORDER_ANIMATION_DURATION, delay));
+ mShakeAnimators.put(child, this);
+ va.start();
+ }
+
+
+ private void completeAnimation() {
+ cancelOnCycleComplete = true;
+ }
+
+ // Returns the time required to complete the current oscillating animation
+ private int completionTime() {
+ if (repeatCount % 2 == 0) {
+ return (int) (va.getDuration() - va.getCurrentPlayTime() + DURATION);
+ } else {
+ return (int) (va.getDuration() - va.getCurrentPlayTime());
+ }
+ }
+ }
+
+ private void completeAndClearReorderHintAnimations() {
+ for (ReorderHintAnimation a: mShakeAnimators.values()) {
+ a.completeAnimation();
+ }
+ mShakeAnimators.clear();
+ }
+
+ private int getMaxCompletionTime() {
+ int maxTime = 0;
+ for (ReorderHintAnimation a: mShakeAnimators.values()) {
+ maxTime = Math.max(maxTime, a.completionTime());
+ }
+ return maxTime;
+ }
+
private void commitTempPlacement() {
for (int i = 0; i < mCountX; i++) {
for (int j = 0; j < mCountY; j++) {
@@ -1958,9 +2103,103 @@
markCellsAsUnoccupiedForView(child);
}
+ /* This seems like it should be obvious and straight-forward, but when the direction vector
+ needs to match with the notion of the dragView pushing other views, we have to employ
+ a slightly more subtle notion of the direction vector. The question is what two points is
+ the vector between? The center of the dragView and its desired destination? Not quite, as
+ this doesn't necessarily coincide with the interaction of the dragView and items occupying
+ those cells. Instead we use some heuristics to often lock the vector to up, down, left
+ or right, which helps make pushing feel right.
+ */
+ private void getDirectionVectorForDrop(int dragViewCenterX, int dragViewCenterY, int spanX,
+ int spanY, View dragView, int[] resultDirection) {
+ int[] targetDestination = new int[2];
+
+ findNearestArea(dragViewCenterX, dragViewCenterY, spanX, spanY, targetDestination);
+ Rect dragRect = new Rect();
+ regionToRect(targetDestination[0], targetDestination[1], spanX, spanY, dragRect);
+ dragRect.offset(dragViewCenterX - dragRect.centerX(), dragViewCenterY - dragRect.centerY());
+
+ Rect dropRegionRect = new Rect();
+ getViewsIntersectingRegion(targetDestination[0], targetDestination[1], spanX, spanY,
+ dragView, dropRegionRect, mIntersectingViews);
+
+ int dropRegionSpanX = dropRegionRect.width();
+ int dropRegionSpanY = dropRegionRect.height();
+
+ regionToRect(dropRegionRect.left, dropRegionRect.top, dropRegionRect.width(),
+ dropRegionRect.height(), dropRegionRect);
+
+ int deltaX = (dropRegionRect.centerX() - dragViewCenterX) / spanX;
+ int deltaY = (dropRegionRect.centerY() - dragViewCenterY) / spanY;
+
+ if (dropRegionSpanX == mCountX || spanX == mCountX) {
+ deltaX = 0;
+ }
+ if (dropRegionSpanY == mCountY || spanY == mCountY) {
+ deltaY = 0;
+ }
+
+ if (deltaX == 0 && deltaY == 0) {
+ // No idea what to do, give a random direction.
+ resultDirection[0] = 1;
+ resultDirection[1] = 0;
+ } else {
+ computeDirectionVector(deltaX, deltaY, resultDirection);
+ }
+ }
+
+ // For a given cell and span, fetch the set of views intersecting the region.
+ private void getViewsIntersectingRegion(int cellX, int cellY, int spanX, int spanY,
+ View dragView, Rect boundingRect, ArrayList<View> intersectingViews) {
+ if (boundingRect != null) {
+ boundingRect.set(cellX, cellY, cellX + spanX, cellY + spanY);
+ }
+ intersectingViews.clear();
+ Rect r0 = new Rect(cellX, cellY, cellX + spanX, cellY + spanY);
+ Rect r1 = new Rect();
+ final int count = mShortcutsAndWidgets.getChildCount();
+ for (int i = 0; i < count; i++) {
+ View child = mShortcutsAndWidgets.getChildAt(i);
+ if (child == dragView) continue;
+ LayoutParams lp = (LayoutParams) child.getLayoutParams();
+ r1.set(lp.cellX, lp.cellY, lp.cellX + lp.cellHSpan, lp.cellY + lp.cellVSpan);
+ if (Rect.intersects(r0, r1)) {
+ mIntersectingViews.add(child);
+ if (boundingRect != null) {
+ boundingRect.union(r1);
+ }
+ }
+ }
+ }
+
+ boolean isNearestDropLocationOccupied(int pixelX, int pixelY, int spanX, int spanY,
+ View dragView, int[] result) {
+ result = findNearestArea(pixelX, pixelY, spanX, spanY, result);
+ getViewsIntersectingRegion(result[0], result[1], spanX, spanY, dragView, null,
+ mIntersectingViews);
+ return !mIntersectingViews.isEmpty();
+ }
+
+ void revertTempState() {
+ if (!isItemPlacementDirty() || DESTRUCTIVE_REORDER) return;
+ final int count = mShortcutsAndWidgets.getChildCount();
+ for (int i = 0; i < count; i++) {
+ View child = mShortcutsAndWidgets.getChildAt(i);
+ LayoutParams lp = (LayoutParams) child.getLayoutParams();
+ if (lp.tmpCellX != lp.cellX || lp.tmpCellY != lp.cellY) {
+ lp.tmpCellX = lp.cellX;
+ lp.tmpCellY = lp.cellY;
+ animateChildToPosition(child, lp.cellX, lp.cellY, REORDER_ANIMATION_DURATION,
+ 0, false, false);
+ }
+ }
+ completeAndClearReorderHintAnimations();
+ setItemPlacementDirty(false);
+ }
+
int[] createArea(int pixelX, int pixelY, int minSpanX, int minSpanY, int spanX, int spanY,
View dragView, int[] result, int resultSpan[], int mode) {
-
// First we determine if things have moved enough to cause a different layout
result = findNearestArea(pixelX, pixelY, spanX, spanY, result);
@@ -1968,10 +2207,24 @@
resultSpan = new int[2];
}
- // We attempt the first algorithm
- regionToCenterPoint(result[0], result[1], spanX, spanY, mTmpPoint);
- computeDirectionVector((mTmpPoint[0] - pixelX) / spanX, (mTmpPoint[1] - pixelY) / spanY,
- mDirectionVector);
+ // When we are checking drop validity or actually dropping, we don't recompute the
+ // direction vector, since we want the solution to match the preview, and it's possible
+ // that the exact position of the item has changed to result in a new reordering outcome.
+ if ((mode == MODE_ON_DROP || mode == MODE_ACCEPT_DROP)
+ && mPreviousReorderDirection[0] != -1) {
+ mDirectionVector[0] = mPreviousReorderDirection[0];
+ mDirectionVector[1] = mPreviousReorderDirection[1];
+ // We reset this vector after drop
+ if (mode == MODE_ON_DROP) {
+ mPreviousReorderDirection[0] = -1;
+ mPreviousReorderDirection[1] = -1;
+ }
+ } else {
+ getDirectionVectorForDrop(pixelX, pixelY, spanX, spanY, dragView, mDirectionVector);
+ mPreviousReorderDirection[0] = mDirectionVector[0];
+ mPreviousReorderDirection[1] = mDirectionVector[1];
+ }
+
ItemConfiguration swapSolution = simpleSwap(pixelX, pixelY, minSpanX, minSpanY,
spanX, spanY, mDirectionVector, dragView, true, new ItemConfiguration());
@@ -2007,8 +2260,14 @@
setItemPlacementDirty(true);
animateItemsToSolution(finalSolution, dragView, mode == MODE_ON_DROP);
- if (!DESTRUCTIVE_REORDER && mode == MODE_ON_DROP) {
+ if (!DESTRUCTIVE_REORDER &&
+ (mode == MODE_ON_DROP || mode == MODE_ON_DROP_EXTERNAL)) {
commitTempPlacement();
+ completeAndClearReorderHintAnimations();
+ setItemPlacementDirty(false);
+ } else {
+ beginOrAdjustHintAnimations(finalSolution, dragView,
+ REORDER_ANIMATION_DURATION);
}
}
} else {
@@ -2024,12 +2283,11 @@
return result;
}
- public boolean isItemPlacementDirty() {
- return mItemLocationsDirty;
+ void setItemPlacementDirty(boolean dirty) {
+ mItemPlacementDirty = dirty;
}
-
- public void setItemPlacementDirty(boolean dirty) {
- mItemLocationsDirty = dirty;
+ boolean isItemPlacementDirty() {
+ return mItemPlacementDirty;
}
private class ItemConfiguration {
@@ -2264,7 +2522,7 @@
mDragCell[0] = mDragCell[1] = -1;
mDragOutlineAnims[mDragOutlineCurrent].animateOut();
mDragOutlineCurrent = (mDragOutlineCurrent + 1) % mDragOutlineAnims.length;
-
+ revertTempState();
setIsDragOverlapping(false);
}
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 9494d27..6464a7d 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -881,7 +881,7 @@
cellXY[0] = cellX;
cellXY[1] = cellY;
} else if (!layout.findCellForSpan(cellXY, 1, 1)) {
- showOutOfSpaceMessage();
+ showOutOfSpaceMessage(isHotseatLayout(layout));
return;
}
@@ -944,7 +944,7 @@
}
if (!foundCellSpan) {
- showOutOfSpaceMessage();
+ showOutOfSpaceMessage(isHotseatLayout(layout));
return;
}
@@ -1039,7 +1039,7 @@
}
}.start();
}
- showOutOfSpaceMessage();
+ showOutOfSpaceMessage(isHotseatLayout(layout));
return;
}
@@ -1225,8 +1225,9 @@
launcherInfo.hostView = null;
}
- void showOutOfSpaceMessage() {
- Toast.makeText(this, getString(R.string.out_of_space), Toast.LENGTH_SHORT).show();
+ void showOutOfSpaceMessage(boolean isHotseatLayout) {
+ int strId = (isHotseatLayout ? R.string.hotseat_out_of_space : R.string.out_of_space);
+ Toast.makeText(this, getString(strId), Toast.LENGTH_SHORT).show();
}
public LauncherAppWidgetHost getAppWidgetHost() {
@@ -2751,7 +2752,7 @@
*/
void addExternalItemToScreen(ItemInfo itemInfo, final CellLayout layout) {
if (!mWorkspace.addExternalItemToScreen(itemInfo, layout)) {
- showOutOfSpaceMessage();
+ showOutOfSpaceMessage(isHotseatLayout(layout));
}
}
diff --git a/src/com/android/launcher2/WallpaperChooserDialogFragment.java b/src/com/android/launcher2/WallpaperChooserDialogFragment.java
index 030d33d..eec699e 100644
--- a/src/com/android/launcher2/WallpaperChooserDialogFragment.java
+++ b/src/com/android/launcher2/WallpaperChooserDialogFragment.java
@@ -82,10 +82,7 @@
outState.putBoolean(EMBEDDED_KEY, mEmbedded);
}
- @Override
- public void onDestroy() {
- super.onDestroy();
-
+ private void cancelLoader() {
if (mLoader != null && mLoader.getStatus() != WallpaperLoader.Status.FINISHED) {
mLoader.cancel(true);
mLoader = null;
@@ -93,6 +90,20 @@
}
@Override
+ public void onDetach() {
+ super.onDetach();
+
+ cancelLoader();
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+
+ cancelLoader();
+ }
+
+ @Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
/* On orientation changes, the dialog is effectively "dismissed" so this is called
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index f1941b3..d1a111c 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -198,6 +198,7 @@
private FolderRingAnimator mDragFolderRingAnimator = null;
private View mLastDragOverView = null;
private boolean mCreateUserFolderOnDrop = false;
+ private boolean mWillAddToExistingFolder = false;
// Variables relating to touch disambiguation (scrolling workspace vs. scrolling a widget)
private float mXDown;
@@ -375,32 +376,12 @@
mIsDragOccuring = true;
updateChildrenLayersEnabled();
mLauncher.lockScreenOrientationOnLargeUI();
-
- // Fade out the workspace slightly to highlight the currently dragging item
- int count = getChildCount();
- for (int i = 0; i < count; i++) {
- CellLayout cl = (CellLayout) getPageAt(i);
- cl.getShortcutsAndWidgets().animate().alpha(mDragFadeOutAlpha)
- .setInterpolator(new AccelerateInterpolator(1.5f))
- .setDuration(mDragFadeOutDuration)
- .start();
- }
}
public void onDragEnd() {
mIsDragOccuring = false;
updateChildrenLayersEnabled();
mLauncher.unlockScreenOrientationOnLargeUI();
-
- // Fade the workspace back in after we have completed dragging
- int count = getChildCount();
- for (int i = 0; i < count; i++) {
- CellLayout cl = (CellLayout) getPageAt(i);
- cl.getShortcutsAndWidgets().animate().alpha(1f)
- .setInterpolator(new DecelerateInterpolator(1.5f))
- .setDuration(mDragFadeOutDuration)
- .start();
- }
}
/**
@@ -429,7 +410,7 @@
mWallpaperTravelWidth = (int) (mDisplayWidth *
wallpaperTravelToScreenWidthRatio(mDisplayWidth, mDisplayHeight));
- mMaxDistanceForFolderCreation = (0.5f * res.getDimension(R.dimen.app_icon_size));
+ mMaxDistanceForFolderCreation = (0.5f * res.getDimensionPixelSize(R.dimen.app_icon_size));
mFlingThresholdVelocity = (int) (FLING_THRESHOLD_VELOCITY * mDensity);
}
@@ -1424,9 +1405,8 @@
}
private void updateChildrenLayersEnabled() {
- boolean small = isSmall() || mIsSwitchingState;
- boolean dragging = mAnimatingViewIntoPlace || mIsDragOccuring;
- boolean enableChildrenLayers = small || dragging || isPageMoving();
+ boolean small = mState == State.SMALL || mIsSwitchingState;
+ boolean enableChildrenLayers = small || mAnimatingViewIntoPlace || isPageMoving();
if (enableChildrenLayers != mChildrenLayersEnabled) {
mChildrenLayersEnabled = enableChildrenLayers;
@@ -2021,12 +2001,10 @@
int spanX = 1;
int spanY = 1;
- View ignoreView = null;
if (mDragInfo != null) {
final CellLayout.CellInfo dragCellInfo = mDragInfo;
spanX = dragCellInfo.spanX;
spanY = dragCellInfo.spanY;
- ignoreView = dragCellInfo.cell;
} else {
final ItemInfo dragInfo = (ItemInfo) d.dragInfo;
spanX = dragInfo.spanX;
@@ -2064,7 +2042,8 @@
if (!foundCell) {
// Don't show the message if we are dropping on the AllApps button and the hotseat
// is full
- if (mTargetCell != null && mLauncher.isHotseatLayout(mDragTargetLayout)) {
+ boolean isHotseat = mLauncher.isHotseatLayout(mDragTargetLayout);
+ if (mTargetCell != null && isHotseat) {
Hotseat hotseat = mLauncher.getHotseat();
if (hotseat.isAllAppsButtonRank(
hotseat.getOrderInHotseat(mTargetCell[0], mTargetCell[1]))) {
@@ -2072,7 +2051,7 @@
}
}
- mLauncher.showOutOfSpaceMessage();
+ mLauncher.showOutOfSpaceMessage(isHotseat);
return false;
}
}
@@ -2082,9 +2061,15 @@
boolean willCreateUserFolder(ItemInfo info, CellLayout target, int[] targetCell, float
distance, boolean considerTimeout) {
if (distance > mMaxDistanceForFolderCreation) return false;
-
View dropOverView = target.getChildAt(targetCell[0], targetCell[1]);
+ if (dropOverView != null) {
+ CellLayout.LayoutParams lp = (CellLayout.LayoutParams) dropOverView.getLayoutParams();
+ if (lp.useTmpCoords && (lp.tmpCellX != lp.cellX || lp.tmpCellY != lp.tmpCellY)) {
+ return false;
+ }
+ }
+
boolean hasntMoved = false;
if (mDragInfo != null) {
hasntMoved = dropOverView == mDragInfo.cell;
@@ -2105,8 +2090,15 @@
boolean willAddToExistingUserFolder(Object dragInfo, CellLayout target, int[] targetCell,
float distance) {
if (distance > mMaxDistanceForFolderCreation) return false;
-
View dropOverView = target.getChildAt(targetCell[0], targetCell[1]);
+
+ if (dropOverView != null) {
+ CellLayout.LayoutParams lp = (CellLayout.LayoutParams) dropOverView.getLayoutParams();
+ if (lp.useTmpCoords && (lp.tmpCellX != lp.cellX || lp.tmpCellY != lp.tmpCellY)) {
+ return false;
+ }
+ }
+
if (dropOverView instanceof FolderIcon) {
FolderIcon fi = (FolderIcon) dropOverView;
if (fi.acceptDrop(dragInfo)) {
@@ -2121,6 +2113,7 @@
Runnable postAnimationRunnable) {
if (distance > mMaxDistanceForFolderCreation) return false;
View v = target.getChildAt(targetCell[0], targetCell[1]);
+
boolean hasntMoved = false;
if (mDragInfo != null) {
CellLayout cellParent = getParentCellLayoutForView(mDragInfo.cell);
@@ -2173,6 +2166,9 @@
if (distance > mMaxDistanceForFolderCreation) return false;
View dropOverView = target.getChildAt(targetCell[0], targetCell[1]);
+ if (!mWillAddToExistingFolder) return false;
+ mWillAddToExistingFolder = false;
+
if (dropOverView instanceof FolderIcon) {
FolderIcon fi = (FolderIcon) dropOverView;
if (fi.acceptDrop(d.dragInfo)) {
@@ -2282,10 +2278,11 @@
// update the item's position after drop
CellLayout.LayoutParams lp = (CellLayout.LayoutParams) cell.getLayoutParams();
- lp.cellX = mTargetCell[0];
- lp.cellY = mTargetCell[1];
+ lp.cellX = lp.tmpCellX = mTargetCell[0];
+ lp.cellY = lp.tmpCellY = mTargetCell[1];
lp.cellHSpan = item.spanX;
lp.cellVSpan = item.spanY;
+ lp.isLockedToGrid = true;
cell.setId(LauncherModel.getCellLayoutChildId(container, mDragInfo.screen,
mTargetCell[0], mTargetCell[1], mDragInfo.spanX, mDragInfo.spanY));
@@ -2781,8 +2778,31 @@
minSpanY = item.minSpanY;
}
- if (!folder && !mReorderAlarm.alarmPending() && (mLastReorderX != mTargetCell[0] ||
- mLastReorderY != mTargetCell[1])) {
+ int[] reorderPosition = new int[2];
+ reorderPosition = findNearestArea((int) mDragViewVisualCenter[0],
+ (int) mDragViewVisualCenter[1], item.spanX, item.spanY, mDragTargetLayout,
+ reorderPosition);
+
+ if (!mDragTargetLayout.isNearestDropLocationOccupied((int) mDragViewVisualCenter[0],
+ (int) mDragViewVisualCenter[1], item.spanX, item.spanY, child, mTargetCell)) {
+ // If the current hover area isn't occupied (permanently) by any items, then we
+ // reset all the reordering.
+ mDragTargetLayout.revertTempState();
+ mDragMode = DRAG_MODE_NONE;
+ mLastDragOverView = dragOverView;
+ if (mReorderAlarm != null) {
+ mReorderAlarm.cancelAlarm();
+ }
+ mLastReorderX = -1;
+ mLastReorderY = -1;
+ mDragTargetLayout.visualizeDropLocation(child, mDragOutline,
+ (int) mDragViewVisualCenter[0], (int) mDragViewVisualCenter[1],
+ mTargetCell[0], mTargetCell[1], item.spanX, item.spanY, false,
+ d.dragView.getDragVisualizeOffset(), d.dragView.getDragRegion());
+ } else if (!folder && !mReorderAlarm.alarmPending() &&
+ (mLastReorderX != reorderPosition[0] || mLastReorderY != reorderPosition[1])) {
+ // Otherwise, if we aren't adding to or creating a folder and there's no pending
+ // reorder, then we schedule a reorder
cancelFolderCreation();
ReorderAlarmListener listener = new ReorderAlarmListener(mDragViewVisualCenter,
minSpanX, minSpanY, item.spanX, item.spanY, d.dragView, child);
@@ -2792,18 +2812,10 @@
if (mReorderAlarm != null) {
mReorderAlarm.cancelAlarm();
}
+ mDragTargetLayout.revertTempState();
+ mLastReorderX = -1;
+ mLastReorderY = -1;
}
- // TODO: need to determine what we're going to about visualizing drop locations
- /*
- boolean resize = resultSpan[0] != info.spanX || resultSpan[1] != info.spanY;
- if (!folder) {
- mDragTargetLayout.visualizeDropLocation(child, mDragOutline,
- (int) mDragViewVisualCenter[0], (int) mDragViewVisualCenter[1],
- mTargetCell[0], mTargetCell[1], resultSpan[0], resultSpan[1], resize,
- d.dragView.getDragVisualizeOffset(), d.dragView.getDragRegion());
-
- }
- */
}
}
@@ -2824,6 +2836,7 @@
if (willAddToFolder && mDragMode == DRAG_MODE_NONE) {
FolderIcon fi = ((FolderIcon) dragOverView);
mDragMode = DRAG_MODE_ADD_TO_FOLDER;
+ mWillAddToExistingFolder = true;
fi.onDragEnter(info);
if (targetLayout != null) {
targetLayout.clearDragOutlines();
@@ -2833,12 +2846,13 @@
if (dragOverView != lastDragOverView || (mCreateUserFolderOnDrop && !userFolderPending)
|| (!willAddToFolder && mDragMode == DRAG_MODE_ADD_TO_FOLDER)) {
cancelFolderCreation();
+ mWillAddToExistingFolder = false;
if (lastDragOverView != null && lastDragOverView instanceof FolderIcon) {
((FolderIcon) lastDragOverView).onDragExit(info);
}
}
- return willAddToFolder || userFolderPending;
+ return (willAddToFolder || userFolderPending) && mDragMode != DRAG_MODE_REORDER;
}
private void cleanupFolderCreation(DragObject d) {
@@ -2905,25 +2919,28 @@
public void onAlarm(Alarm alarm) {
int[] resultSpan = new int[2];
+ mTargetCell = findNearestArea((int) mDragViewVisualCenter[0],
+ (int) mDragViewVisualCenter[1], spanX, spanY, mDragTargetLayout, mTargetCell);
+ mLastReorderX = mTargetCell[0];
+ mLastReorderY = mTargetCell[1];
+
mTargetCell = mDragTargetLayout.createArea((int) mDragViewVisualCenter[0],
(int) mDragViewVisualCenter[1], minSpanX, minSpanY, spanX, spanY,
child, mTargetCell, resultSpan, CellLayout.MODE_DRAG_OVER);
- mLastReorderX = mTargetCell[0];
- mLastReorderY = mTargetCell[1];
+ if (mTargetCell[0] < 0 || mTargetCell[1] < 0) {
+ mDragTargetLayout.revertTempState();
+ }
if (mDragMode == DRAG_MODE_ADD_TO_FOLDER) {
}
mDragMode = DRAG_MODE_REORDER;
- // TODO: need to determine what we're going to about visualizing drop locations
- /*
boolean resize = resultSpan[0] != spanX || resultSpan[1] != spanY;
mDragTargetLayout.visualizeDropLocation(child, mDragOutline,
(int) mDragViewVisualCenter[0], (int) mDragViewVisualCenter[1],
mTargetCell[0], mTargetCell[1], resultSpan[0], resultSpan[1], resize,
dragView.getDragVisualizeOffset(), dragView.getDragRegion());
- */
}
}
@@ -2943,7 +2960,7 @@
onDropExternal(dragInfo.dropPos, (ItemInfo) dragInfo, (CellLayout) layout, false);
return true;
}
- mLauncher.showOutOfSpaceMessage();
+ mLauncher.showOutOfSpaceMessage(mLauncher.isHotseatLayout(layout));
return false;
}