aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/values-af/strings.xml3
-rw-r--r--java/res/values-ar/strings.xml3
-rw-r--r--java/res/values-ca/strings.xml3
-rw-r--r--java/res/values-cs/strings.xml3
-rw-r--r--java/res/values-da/strings.xml3
-rw-r--r--java/res/values-de/strings.xml3
-rw-r--r--java/res/values-el/strings.xml3
-rw-r--r--java/res/values-en-rGB/strings.xml3
-rw-r--r--java/res/values-en-rIN/strings.xml3
-rw-r--r--java/res/values-es/strings.xml3
-rw-r--r--java/res/values-et-rEE/strings.xml3
-rw-r--r--java/res/values-fi/strings.xml3
-rw-r--r--java/res/values-fr-rCA/strings.xml3
-rw-r--r--java/res/values-hi/strings.xml3
-rw-r--r--java/res/values-hr/strings.xml3
-rw-r--r--java/res/values-hu/strings.xml3
-rw-r--r--java/res/values-in/strings.xml3
-rw-r--r--java/res/values-it/strings.xml3
-rw-r--r--java/res/values-iw/strings.xml3
-rw-r--r--java/res/values-km-rKH/strings.xml3
-rw-r--r--java/res/values-lt/strings.xml3
-rw-r--r--java/res/values-mn-rMN/strings.xml3
-rw-r--r--java/res/values-nb/strings.xml3
-rw-r--r--java/res/values-nl/strings.xml3
-rw-r--r--java/res/values-pl/strings.xml3
-rw-r--r--java/res/values-pt-rPT/strings.xml3
-rw-r--r--java/res/values-sl/strings.xml3
-rw-r--r--java/res/values-sr/strings.xml3
-rw-r--r--java/res/values-sv/strings.xml3
-rw-r--r--java/res/values-uk/strings.xml3
-rw-r--r--java/res/values-zu/strings.xml3
-rw-r--r--java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java58
-rw-r--r--java/src/com/android/inputmethod/keyboard/MainKeyboardView.java4
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/EmojiPageKeyboardView.java22
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingPoints.java16
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/TimerHandler.java2
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java47
-rw-r--r--java/src/com/android/inputmethod/latin/InputPointers.java58
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java53
-rw-r--r--java/src/com/android/inputmethod/latin/RichInputConnection.java4
-rw-r--r--java/src/com/android/inputmethod/latin/WordComposer.java2
-rw-r--r--java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java16
-rw-r--r--java/src/com/android/inputmethod/latin/utils/ResizableIntArray.java2
43 files changed, 218 insertions, 159 deletions
diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml
index 8600b7253..92f24667d 100644
--- a/java/res/values-af/strings.xml
+++ b/java/res/values-af/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"tyd"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Steminvoerinstellings"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Geen steminvoermetodes geaktiveer nie. Gaan taal- en invoerinstellings na."</string>
<string name="configure_input_method" msgid="373356270290742459">"Stel invoermetodes op"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Invoertale"</string>
<string name="send_feedback" msgid="1780431884109392046">"Stuur terugvoer"</string>
diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml
index b42cd29c4..fa9309ff6 100644
--- a/java/res/values-ar/strings.xml
+++ b/java/res/values-ar/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"الوقت"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"‏عنوان URL"</string>
<string name="voice_input" msgid="3583258583521397548">"مفتاح الإدخال الصوتي"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"لم يتم تمكين أي أساليب إدخال صوتي. تحقق من إعدادات اللغة والإدخال."</string>
<string name="configure_input_method" msgid="373356270290742459">"تهيئة طرق الإدخال"</string>
<string name="language_selection_title" msgid="1651299598555326750">"لغات الإدخال"</string>
<string name="send_feedback" msgid="1780431884109392046">"إرسال تعليقات"</string>
diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml
index 21dd7d551..9aff4039a 100644
--- a/java/res/values-ca/strings.xml
+++ b/java/res/values-ca/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"hora"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Tecla d\'entrada de veu"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"No hi ha cap mètode d\'introducció activat. Comprova la configuració d\'Idioma i introducció de text."</string>
<string name="configure_input_method" msgid="373356270290742459">"Configura mètodes d\'entrada"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Idiomes"</string>
<string name="send_feedback" msgid="1780431884109392046">"Envia comentaris"</string>
diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml
index 8140615e2..77bae5575 100644
--- a/java/res/values-cs/strings.xml
+++ b/java/res/values-cs/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"čas"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"adresy URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Klávesa hlasového vstupu"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nejsou povoleny žádné metody hlasového vstupu. Zkontrolujte nastavení Jazyk a vstup."</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfigurace metod zadávání"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Vstupní jazyky"</string>
<string name="send_feedback" msgid="1780431884109392046">"Odeslat zpětnou vazbu"</string>
diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml
index b7f75b3f6..cd3a66750 100644
--- a/java/res/values-da/strings.xml
+++ b/java/res/values-da/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"klokkeslæt"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"Webadresse"</string>
<string name="voice_input" msgid="3583258583521397548">"Nøgle til stemmeinput"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Der er ingen aktiverede stemmeinputmetoder. Kontrollér Indstillinger for sprog og input."</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfigurer inputmetoder"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Inputsprog"</string>
<string name="send_feedback" msgid="1780431884109392046">"Send feedback"</string>
diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml
index 178db3cd1..1d0a5497d 100644
--- a/java/res/values-de/strings.xml
+++ b/java/res/values-de/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"Zeit"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Taste für Spracheingabe"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Keine Spracheingabemethoden aktiviert. Rufen Sie die Einstellungen für \"Sprache &amp; Eingabe\" auf."</string>
<string name="configure_input_method" msgid="373356270290742459">"Eingabemethoden konfigurieren"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Eingabesprachen"</string>
<string name="send_feedback" msgid="1780431884109392046">"Feedback geben"</string>
diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml
index 6875f68be..c9086fdc9 100644
--- a/java/res/values-el/strings.xml
+++ b/java/res/values-el/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"ώρα"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"διεύθυνση URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Κλειδί φωνητικής εξόδου"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Δεν έχουν ενεργοποιηθεί μέθοδοι φωνητικής εισαγωγής. Ελέγξτε τις Ρυθμίσεις Γλώσσας και εισαγωγής."</string>
<string name="configure_input_method" msgid="373356270290742459">"Διαμόρφωση μεθόδων εισαγωγής"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Γλώσσες εισόδου"</string>
<string name="send_feedback" msgid="1780431884109392046">"Αποστολή σχολίων"</string>
diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml
index 7e5e0e185..f344e7331 100644
--- a/java/res/values-en-rGB/strings.xml
+++ b/java/res/values-en-rGB/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"time"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Voice input key"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"No voice input methods enabled. Check Language &amp; input settings."</string>
<string name="configure_input_method" msgid="373356270290742459">"Configure input methods"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Input languages"</string>
<string name="send_feedback" msgid="1780431884109392046">"Send feedback"</string>
diff --git a/java/res/values-en-rIN/strings.xml b/java/res/values-en-rIN/strings.xml
index 7e5e0e185..f344e7331 100644
--- a/java/res/values-en-rIN/strings.xml
+++ b/java/res/values-en-rIN/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"time"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Voice input key"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"No voice input methods enabled. Check Language &amp; input settings."</string>
<string name="configure_input_method" msgid="373356270290742459">"Configure input methods"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Input languages"</string>
<string name="send_feedback" msgid="1780431884109392046">"Send feedback"</string>
diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml
index cfcb988ff..542734920 100644
--- a/java/res/values-es/strings.xml
+++ b/java/res/values-es/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"hora"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Tecla de entrada de voz"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Sin métodos de introducción de voz habilitados. Comprueba ajustes de Idioma e introducción de texto."</string>
<string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de entrada"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Idiomas"</string>
<string name="send_feedback" msgid="1780431884109392046">"Danos tu opinión"</string>
diff --git a/java/res/values-et-rEE/strings.xml b/java/res/values-et-rEE/strings.xml
index 68be2f213..2c94c7753 100644
--- a/java/res/values-et-rEE/strings.xml
+++ b/java/res/values-et-rEE/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"aeg"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Häälesisendi klahv"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Ühtegi häälsisendmeetodit pole lubatud. Kontrollige keele- ja sisendiseadeid."</string>
<string name="configure_input_method" msgid="373356270290742459">"Sisestusmeetodite seadistamine"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Sisestuskeeled"</string>
<string name="send_feedback" msgid="1780431884109392046">"Saatke tagasisidet"</string>
diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml
index 2e4a2c7ad..b729c2b2b 100644
--- a/java/res/values-fi/strings.xml
+++ b/java/res/values-fi/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"aika"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL-osoite"</string>
<string name="voice_input" msgid="3583258583521397548">"Äänisyöteavain"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Äänen syöttötapoja ei ole otettu käyttöön. Tarkista Kieli ja syöttötapa -asetukset."</string>
<string name="configure_input_method" msgid="373356270290742459">"Määritä syöttötavat"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Syöttökielet"</string>
<string name="send_feedback" msgid="1780431884109392046">"Lähetä palautetta"</string>
diff --git a/java/res/values-fr-rCA/strings.xml b/java/res/values-fr-rCA/strings.xml
index 14272024c..d76716524 100644
--- a/java/res/values-fr-rCA/strings.xml
+++ b/java/res/values-fr-rCA/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"Heure"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Touche de saisie vocale"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Aucun mode d\'entrée vocale n\'a été activé. Vérifiez les paramètres de langues et d\'entrée de texte."</string>
<string name="configure_input_method" msgid="373356270290742459">"Configurer les modes de saisie"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Langues de saisie"</string>
<string name="send_feedback" msgid="1780431884109392046">"Envoyer des commentaires"</string>
diff --git a/java/res/values-hi/strings.xml b/java/res/values-hi/strings.xml
index 7336156d6..7b9cbfacf 100644
--- a/java/res/values-hi/strings.xml
+++ b/java/res/values-hi/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"समय"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"ध्‍वनि‍ इनपुट कुंजी"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"कोई ध्वनि इनपुट पद्धति सक्षम नहीं है. भाषा और इनपुट सेटिंग जांचें."</string>
<string name="configure_input_method" msgid="373356270290742459">"इनपुट पद्धति कॉन्‍फ़िगर करें"</string>
<string name="language_selection_title" msgid="1651299598555326750">"इनपुट भाषा"</string>
<string name="send_feedback" msgid="1780431884109392046">"सुझाव भेजें"</string>
diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml
index 1afe99e76..cb8dda144 100644
--- a/java/res/values-hr/strings.xml
+++ b/java/res/values-hr/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"vrijeme"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Tipka za glasovni unos"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nije omogućen nijedan način glasovnog unosa. Provjerite postavke jezika i unosa."</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfiguriraj načine ulaza"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Jezici unosa"</string>
<string name="send_feedback" msgid="1780431884109392046">"Slanje povratnih informacija"</string>
diff --git a/java/res/values-hu/strings.xml b/java/res/values-hu/strings.xml
index 8ed477af1..2948826bb 100644
--- a/java/res/values-hu/strings.xml
+++ b/java/res/values-hu/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"idő"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Hangbeviteli gomb"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nincs engedélyezett hangbeviteli módszer. Nézze meg a Nyelvi és beviteli beállításokat."</string>
<string name="configure_input_method" msgid="373356270290742459">"Beviteli módok beállítása"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Beviteli nyelvek"</string>
<string name="send_feedback" msgid="1780431884109392046">"Visszajelzés küldése"</string>
diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml
index 695770004..96fa1f8b9 100644
--- a/java/res/values-in/strings.xml
+++ b/java/res/values-in/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"waktu"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Tombol masukan suara"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Tidak ada metode masukan suara yang diaktifkan. Periksa setelan Bahasan &amp; masukan."</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfigurasikan metode masukan"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Bahasa masukan"</string>
<string name="send_feedback" msgid="1780431884109392046">"Kirim masukan"</string>
diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml
index 12f5004b1..ea8bf0255 100644
--- a/java/res/values-it/strings.xml
+++ b/java/res/values-it/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"ora"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Tasto input vocale"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nessun metodo di immissione vocale abilitato. Controlla le impostazioni Lingua e input."</string>
<string name="configure_input_method" msgid="373356270290742459">"Configura metodi di immissione"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Lingue comandi"</string>
<string name="send_feedback" msgid="1780431884109392046">"Invia feedback"</string>
diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml
index 0604eb727..8899cec5c 100644
--- a/java/res/values-iw/strings.xml
+++ b/java/res/values-iw/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"זמן"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"כתובות אתרים"</string>
<string name="voice_input" msgid="3583258583521397548">"מקש קלט קולי"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"לא הופעלו שיטות של קלט קולי. בדוק את הגדרות השפה והקלט."</string>
<string name="configure_input_method" msgid="373356270290742459">"הגדרת שיטות קלט"</string>
<string name="language_selection_title" msgid="1651299598555326750">"שפות קלט"</string>
<string name="send_feedback" msgid="1780431884109392046">"שלח משוב"</string>
diff --git a/java/res/values-km-rKH/strings.xml b/java/res/values-km-rKH/strings.xml
index e98afd227..4fdb7d21b 100644
--- a/java/res/values-km-rKH/strings.xml
+++ b/java/res/values-km-rKH/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"ពេលវេលា"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"គ្រាប់​ចុច​បញ្ចូល​​សំឡេង"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"គ្មាន​វិធីសាស្ត្រ​បញ្ចូល​សំឡេង​បាន​បើក។ ពិនិត្យ​មើល​ការ​កំណត់​ភាសា &amp; ការ​បញ្ចូល។"</string>
<string name="configure_input_method" msgid="373356270290742459">"កំណត់​រចនាសម្ព័ន្ធ​វិធីសាស្ត្រ​បញ្ចូល"</string>
<string name="language_selection_title" msgid="1651299598555326750">"បញ្ចូល​ភាសា"</string>
<string name="send_feedback" msgid="1780431884109392046">"ផ្ញើ​មតិ​អ្នក​ប្រើ"</string>
diff --git a/java/res/values-lt/strings.xml b/java/res/values-lt/strings.xml
index 714205e0c..62460b2e7 100644
--- a/java/res/values-lt/strings.xml
+++ b/java/res/values-lt/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"laiko"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Įvesties balsu klavišas"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nėra jokių įgalintų įvesties balsu metodų. Patikrinkite kalbos ir įvesties nustatymus."</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfigūruoti įvesties metodus"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Įvesties kalbos"</string>
<string name="send_feedback" msgid="1780431884109392046">"Siųsti atsiliepimą"</string>
diff --git a/java/res/values-mn-rMN/strings.xml b/java/res/values-mn-rMN/strings.xml
index 2f74dfa7f..e015752d4 100644
--- a/java/res/values-mn-rMN/strings.xml
+++ b/java/res/values-mn-rMN/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"цаг"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Дуун оруулгын товч"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Ямар ч дуу оруулах хэрэглүүр идэвхжээгүй байна. Хэл болон оруулалтын тохиргоог шалгана уу."</string>
<string name="configure_input_method" msgid="373356270290742459">"Оруулах аргуудын тохиргоо"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Оруулах хэл"</string>
<string name="send_feedback" msgid="1780431884109392046">"Санал хүсэлт илгээх"</string>
diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml
index 16ccadc59..ed8536445 100644
--- a/java/res/values-nb/strings.xml
+++ b/java/res/values-nb/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"tid"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"Nettadresse"</string>
<string name="voice_input" msgid="3583258583521397548">"Tast for taleinndata"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Ingen taleinndatametoder er aktivert. Sjekk Språk og inndata-innstillingene."</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfigurer inndatametoder"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Inndataspråk"</string>
<string name="send_feedback" msgid="1780431884109392046">"Send tilbakemelding"</string>
diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml
index 81791fad3..57511f984 100644
--- a/java/res/values-nl/strings.xml
+++ b/java/res/values-nl/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"tijd"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Toets voor spraakinvoer"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Geen spraakinvoermethoden ingeschakeld. Ga naar \'Instellingen voor taal en invoer\'."</string>
<string name="configure_input_method" msgid="373356270290742459">"Invoermethoden configureren"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Invoertalen"</string>
<string name="send_feedback" msgid="1780431884109392046">"Feedback verzenden"</string>
diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml
index cfc6c7cf0..257fc2a8f 100644
--- a/java/res/values-pl/strings.xml
+++ b/java/res/values-pl/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"godzina"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Klawisz rozpoznawania mowy"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nie włączono żadnych metod wprowadzania głosowego. Sprawdź ustawienia języka i wprowadzania."</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfiguruj metody wprowadzania"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Języki wprowadzania"</string>
<string name="send_feedback" msgid="1780431884109392046">"Prześlij opinię"</string>
diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml
index c247d3b41..de4badae9 100644
--- a/java/res/values-pt-rPT/strings.xml
+++ b/java/res/values-pt-rPT/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"hora"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URLs"</string>
<string name="voice_input" msgid="3583258583521397548">"Chave de entrada de voz"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nenhum método de entrada de texto por voz ativado. Verifique as definições de Idioma e introdução."</string>
<string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de introdução"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
<string name="send_feedback" msgid="1780431884109392046">"Enviar comentários"</string>
diff --git a/java/res/values-sl/strings.xml b/java/res/values-sl/strings.xml
index f33012767..cbbf75879 100644
--- a/java/res/values-sl/strings.xml
+++ b/java/res/values-sl/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"ura"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Tipka za glasovni vnos"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Ni omogočenih glasovnih načinov vnosa. Preverite nastavitve v razdelku »Jezik in vnos«."</string>
<string name="configure_input_method" msgid="373356270290742459">"Nastavitev načinov vnosa"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Jeziki vnosa"</string>
<string name="send_feedback" msgid="1780431884109392046">"Pošljite povratne informacije"</string>
diff --git a/java/res/values-sr/strings.xml b/java/res/values-sr/strings.xml
index 42f7b3b8e..00f00315f 100644
--- a/java/res/values-sr/strings.xml
+++ b/java/res/values-sr/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"време"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Тастер за гласовни унос"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Ниједан метод гласовног уноса није омогућен. Проверите Подешавања језика и уноса."</string>
<string name="configure_input_method" msgid="373356270290742459">"Конфигурисање метода уноса"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Језици за унос"</string>
<string name="send_feedback" msgid="1780431884109392046">"Пошаљи повратне информације"</string>
diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml
index bc1005482..6a16d3392 100644
--- a/java/res/values-sv/strings.xml
+++ b/java/res/values-sv/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"klockslag"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"webbadresser"</string>
<string name="voice_input" msgid="3583258583521397548">"Röstinmatningsknapp"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Ingen röstinmatningsmetod har aktiverats. Kontrollera språk- och inmatningsinställningarna."</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfigurera inmatningsmetoder"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Inmatningsspråk"</string>
<string name="send_feedback" msgid="1780431884109392046">"Skicka feedback"</string>
diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml
index eb249fbbe..34630046b 100644
--- a/java/res/values-uk/strings.xml
+++ b/java/res/values-uk/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"час"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"URL-адреси"</string>
<string name="voice_input" msgid="3583258583521397548">"Ключ голосового вводу"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Способи голосового вводу не ввімкнено. Перейдіть у налаштування \"Мова та введення\"."</string>
<string name="configure_input_method" msgid="373356270290742459">"Налаштування методів введення"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Мови вводу"</string>
<string name="send_feedback" msgid="1780431884109392046">"Надіслати відгук"</string>
diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml
index 9cf6cb965..0afb3b952 100644
--- a/java/res/values-zu/strings.xml
+++ b/java/res/values-zu/strings.xml
@@ -119,8 +119,7 @@
<string name="keyboard_mode_time" msgid="4381856885582143277">"isikhathi"</string>
<string name="keyboard_mode_url" msgid="1519819835514911218">"I-URL"</string>
<string name="voice_input" msgid="3583258583521397548">"Inkinobho yokufaka izwi"</string>
- <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
- <skip />
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Azikho izindlela zokufaka zezwi ezinikwe amandla. Hlola izilungiselelo zolimi kanye nezokufaka."</string>
<string name="configure_input_method" msgid="373356270290742459">"Misa izindlela zokufakwayo"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Izilimi zokufakwayo"</string>
<string name="send_feedback" msgid="1780431884109392046">"Thumela impendulo"</string>
diff --git a/java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java b/java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java
index ff0d53865..31749614d 100644
--- a/java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java
+++ b/java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java
@@ -71,8 +71,8 @@ import java.util.concurrent.ConcurrentHashMap;
* Because of the above reasons, this class doesn't extend {@link KeyboardView}.
*/
public final class EmojiPalettesView extends LinearLayout implements OnTabChangeListener,
- ViewPager.OnPageChangeListener, View.OnClickListener,
- EmojiPageKeyboardView.OnKeyClickListener {
+ ViewPager.OnPageChangeListener, View.OnTouchListener,
+ EmojiPageKeyboardView.OnKeyEventListener {
static final String TAG = EmojiPalettesView.class.getSimpleName();
private static final boolean DEBUG_PAGER = false;
private final int mKeyBackgroundId;
@@ -486,16 +486,16 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
final ImageView alphabetKey = (ImageView)findViewById(R.id.emoji_keyboard_alphabet);
alphabetKey.setBackgroundResource(mEmojiFunctionalKeyBackgroundId);
alphabetKey.setTag(Constants.CODE_SWITCH_ALPHA_SYMBOL);
- alphabetKey.setOnClickListener(this);
+ alphabetKey.setOnTouchListener(this);
final ImageView spaceKey = (ImageView)findViewById(R.id.emoji_keyboard_space);
spaceKey.setBackgroundResource(mKeyBackgroundId);
spaceKey.setTag(Constants.CODE_SPACE);
- spaceKey.setOnClickListener(this);
+ spaceKey.setOnTouchListener(this);
mEmojiLayoutParams.setKeyProperties(spaceKey);
final ImageView alphabetKey2 = (ImageView)findViewById(R.id.emoji_keyboard_alphabet2);
alphabetKey2.setBackgroundResource(mEmojiFunctionalKeyBackgroundId);
alphabetKey2.setTag(Constants.CODE_SWITCH_ALPHA_SYMBOL);
- alphabetKey2.setOnClickListener(this);
+ alphabetKey2.setOnTouchListener(this);
}
@Override
@@ -543,31 +543,51 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
}
}
+ // Called from {@link EmojiPageKeyboardView} through {@link View.OnTouchListener} interface to
+ // handle touch events from View-based elements such as the space bar.
@Override
- public void onClick(final View v) {
- if (v.getTag() instanceof Integer) {
- final int code = (Integer)v.getTag();
- registerCode(code);
- return;
+ public boolean onTouch(final View v, final MotionEvent event) {
+ final Object tag = v.getTag();
+ if (!(tag instanceof Integer)) {
+ return false;
+ }
+ final int code = (Integer) tag;
+ switch(event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ mKeyboardActionListener.onPressKey(
+ code, 0 /* repeatCount */, true /* isSinglePointer */);
+ break;
+ case MotionEvent.ACTION_UP:
+ mKeyboardActionListener.onCodeInput(code, NOT_A_COORDINATE, NOT_A_COORDINATE);
+ mKeyboardActionListener.onReleaseKey(code, false /* withSliding */);
+ break;
}
+ return false;
}
- private void registerCode(final int code) {
+ // Called from {@link EmojiPageKeyboardView} through
+ // {@link EmojiPageKeyboardView.OnKeyEventListener} interface to handle touch events from
+ // non-View-based elements like typical Emoji characters.
+ @Override
+ public void onPressKey(final Key key) {
+ final int code = key.getCode();
mKeyboardActionListener.onPressKey(code, 0 /* repeatCount */, true /* isSinglePointer */);
- mKeyboardActionListener.onCodeInput(code, NOT_A_COORDINATE, NOT_A_COORDINATE);
- mKeyboardActionListener.onReleaseKey(code, false /* withSliding */);
}
+ // Called from {@link EmojiPageKeyboardView} through
+ // {@link EmojiPageKeyboardView.OnKeyEventListener} interface to handle touch events from
+ // non-View-based elements like typical Emoji characters.
@Override
- public void onKeyClick(final Key key) {
+ public void onReleaseKey(final Key key) {
mEmojiPalettesAdapter.addRecentKey(key);
mEmojiCategory.saveLastTypedCategoryPage();
final int code = key.getCode();
if (code == Constants.CODE_OUTPUT_TEXT) {
mKeyboardActionListener.onTextInput(key.getOutputText());
- return;
+ } else {
+ mKeyboardActionListener.onCodeInput(code, NOT_A_COORDINATE, NOT_A_COORDINATE);
}
- registerCode(code);
+ mKeyboardActionListener.onReleaseKey(code, false /* withSliding */);
}
public void setHardwareAcceleratedDrawingEnabled(final boolean enabled) {
@@ -630,7 +650,7 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
}
private static class EmojiPalettesAdapter extends PagerAdapter {
- private final EmojiPageKeyboardView.OnKeyClickListener mListener;
+ private final EmojiPageKeyboardView.OnKeyEventListener mListener;
private final DynamicGridKeyboard mRecentsKeyboard;
private final SparseArray<EmojiPageKeyboardView> mActiveKeyboardViews =
CollectionUtils.newSparseArray();
@@ -638,7 +658,7 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
private int mActivePosition = 0;
public EmojiPalettesAdapter(final EmojiCategory emojiCategory,
- final EmojiPageKeyboardView.OnKeyClickListener listener) {
+ final EmojiPageKeyboardView.OnKeyEventListener listener) {
mEmojiCategory = emojiCategory;
mListener = listener;
mRecentsKeyboard = mEmojiCategory.getKeyboard(CATEGORY_ID_RECENTS, 0);
@@ -702,7 +722,7 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
final EmojiPageKeyboardView keyboardView = (EmojiPageKeyboardView)inflater.inflate(
R.layout.emoji_keyboard_page, container, false /* attachToRoot */);
keyboardView.setKeyboard(keyboard);
- keyboardView.setOnKeyClickListener(mListener);
+ keyboardView.setOnKeyEventListener(mListener);
container.addView(keyboardView);
mActiveKeyboardViews.put(position, keyboardView);
return keyboardView;
diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
index e1c841de7..810bd9150 100644
--- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
@@ -424,8 +424,8 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
*/
@Override
public void setKeyboard(final Keyboard keyboard) {
- // Remove any pending messages.
- mKeyTimerHandler.cancelAllKeyTimers();
+ // Remove any pending messages, except dismissing preview and key repeat.
+ mKeyTimerHandler.cancelLongPressTimers();
super.setKeyboard(keyboard);
mKeyDetector.setKeyboard(
keyboard, -getPaddingLeft(), -getPaddingTop() + getVerticalCorrection());
diff --git a/java/src/com/android/inputmethod/keyboard/internal/EmojiPageKeyboardView.java b/java/src/com/android/inputmethod/keyboard/internal/EmojiPageKeyboardView.java
index 2e80f7962..5c7c6e39d 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/EmojiPageKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/EmojiPageKeyboardView.java
@@ -35,16 +35,19 @@ import com.android.inputmethod.latin.R;
// TODO: Implement key popup preview.
public final class EmojiPageKeyboardView extends KeyboardView implements
GestureDetector.OnGestureListener {
- public interface OnKeyClickListener {
- public void onKeyClick(Key key);
+ public interface OnKeyEventListener {
+ public void onPressKey(Key key);
+ public void onReleaseKey(Key key);
}
- private static final OnKeyClickListener EMPTY_LISTENER = new OnKeyClickListener() {
- @Override
- public void onKeyClick(final Key key) {}
+ private static final OnKeyEventListener EMPTY_LISTENER = new OnKeyEventListener() {
+ @Override
+ public void onPressKey(final Key key) {}
+ @Override
+ public void onReleaseKey(final Key key) {}
};
- private OnKeyClickListener mListener = EMPTY_LISTENER;
+ private OnKeyEventListener mListener = EMPTY_LISTENER;
private final KeyDetector mKeyDetector = new KeyDetector(0.0f /*keyHysteresisDistance */);
private final GestureDetector mGestureDetector;
@@ -59,7 +62,7 @@ public final class EmojiPageKeyboardView extends KeyboardView implements
mGestureDetector.setIsLongpressEnabled(false /* isLongpressEnabled */);
}
- public void setOnKeyClickListener(final OnKeyClickListener listener) {
+ public void setOnKeyEventListener(final OnKeyEventListener listener) {
mListener = listener;
}
@@ -115,9 +118,9 @@ public final class EmojiPageKeyboardView extends KeyboardView implements
if (key == null) {
return false;
}
- // TODO: May call {@link KeyboardActionListener#onPressKey(int,int,boolean)}.
key.onPressed();
invalidateKey(key);
+ mListener.onPressKey(key);
return false;
}
@@ -133,10 +136,9 @@ public final class EmojiPageKeyboardView extends KeyboardView implements
if (key == null) {
return false;
}
- // TODO: May call {@link KeyboardActionListener#onReleaseKey(int,boolean)}.
key.onReleased();
invalidateKey(key);
- mListener.onKeyClick(key);
+ mListener.onReleaseKey(key);
return true;
}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingPoints.java b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingPoints.java
index 7618682da..7d09e9d2f 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingPoints.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingPoints.java
@@ -157,19 +157,19 @@ public final class GestureStrokeDrawingPoints {
for (int i = 1; i < segments; i++) {
final float t = i / (float)segments;
mInterpolator.interpolate(t);
- eventTimes.add(d1, (int)(dt * t) + t1);
- xCoords.add(d1, (int)mInterpolator.mInterpolatedX);
- yCoords.add(d1, (int)mInterpolator.mInterpolatedY);
+ eventTimes.addAt(d1, (int)(dt * t) + t1);
+ xCoords.addAt(d1, (int)mInterpolator.mInterpolatedX);
+ yCoords.addAt(d1, (int)mInterpolator.mInterpolatedY);
if (GestureTrailDrawingPoints.DEBUG_SHOW_POINTS) {
- types.add(d1, GestureTrailDrawingPoints.POINT_TYPE_INTERPOLATED);
+ types.addAt(d1, GestureTrailDrawingPoints.POINT_TYPE_INTERPOLATED);
}
d1++;
}
- eventTimes.add(d1, pt[p2]);
- xCoords.add(d1, px[p2]);
- yCoords.add(d1, py[p2]);
+ eventTimes.addAt(d1, pt[p2]);
+ xCoords.addAt(d1, px[p2]);
+ yCoords.addAt(d1, py[p2]);
if (GestureTrailDrawingPoints.DEBUG_SHOW_POINTS) {
- types.add(d1, GestureTrailDrawingPoints.POINT_TYPE_SAMPLED);
+ types.addAt(d1, GestureTrailDrawingPoints.POINT_TYPE_SAMPLED);
}
}
return lastInterpolatedDrawIndex;
diff --git a/java/src/com/android/inputmethod/keyboard/internal/TimerHandler.java b/java/src/com/android/inputmethod/keyboard/internal/TimerHandler.java
index 3298a3f24..ec7b9b024 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/TimerHandler.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/TimerHandler.java
@@ -126,7 +126,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple
removeMessages(MSG_LONGPRESS_SHIFT_KEY);
}
- private void cancelLongPressTimers() {
+ public void cancelLongPressTimers() {
removeMessages(MSG_LONGPRESS_KEY);
removeMessages(MSG_LONGPRESS_SHIFT_KEY);
}
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
index c9bcfe369..aa8bb2ccb 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
@@ -36,6 +36,7 @@ import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
// TODO: Consolidate dictionaries in native code.
@@ -55,8 +56,7 @@ public class DictionaryFacilitatorForSuggest {
private UserHistoryDictionary mUserHistoryDictionary;
private PersonalizationDictionary mPersonalizationDictionary;
- @UsedForTesting
- private boolean mIsCurrentlyWaitingForMainDictionary = false;
+ private final CountDownLatch mLatchForWaitingLoadingMainDictionary;
public interface DictionaryInitializationListener {
public void onUpdateMainDictionaryAvailability(boolean isMainDictionaryAvailable);
@@ -77,13 +77,41 @@ public class DictionaryFacilitatorForSuggest {
final DictionaryFacilitatorForSuggest oldDictionaryFacilitator) {
mContext = context;
mLocale = locale;
+ mLatchForWaitingLoadingMainDictionary = new CountDownLatch(1);
initForDebug(settingsValues);
- reloadMainDict(context, locale, listener);
+ loadMainDict(context, locale, listener);
setUserDictionary(new UserBinaryDictionary(context, locale));
resetAdditionalDictionaries(oldDictionaryFacilitator, settingsValues);
}
/**
+ * Creates instance for reloading the main dict.
+ *
+ * @param listener the listener
+ * @param oldDictionaryFacilitator the instance having old dictionaries. This must not be null.
+ */
+ public DictionaryFacilitatorForSuggest(final DictionaryInitializationListener listener,
+ final DictionaryFacilitatorForSuggest oldDictionaryFacilitator) {
+ mContext = oldDictionaryFacilitator.mContext;
+ mLocale = oldDictionaryFacilitator.mLocale;
+ mDictionarySubsetForDebug = oldDictionaryFacilitator.mDictionarySubsetForDebug;
+ mLatchForWaitingLoadingMainDictionary = new CountDownLatch(1);
+ loadMainDict(mContext, mLocale, listener);
+ // Transfer user dictionary.
+ setUserDictionary(oldDictionaryFacilitator.mUserDictionary);
+ oldDictionaryFacilitator.removeDictionary(Dictionary.TYPE_USER);
+ // Transfer contacts dictionary.
+ setContactsDictionary(oldDictionaryFacilitator.mContactsDictionary);
+ oldDictionaryFacilitator.removeDictionary(Dictionary.TYPE_CONTACTS);
+ // Transfer user history dictionary.
+ setUserHistoryDictionary(oldDictionaryFacilitator.mUserHistoryDictionary);
+ oldDictionaryFacilitator.removeDictionary(Dictionary.TYPE_USER_HISTORY);
+ // Transfer personalization dictionary.
+ setPersonalizationDictionary(oldDictionaryFacilitator.mPersonalizationDictionary);
+ oldDictionaryFacilitator.removeDictionary(Dictionary.TYPE_PERSONALIZATION);
+ }
+
+ /**
* Creates instance for when the settings values have been changed.
*
* @param settingsValues the new settings values
@@ -94,6 +122,7 @@ public class DictionaryFacilitatorForSuggest {
final DictionaryFacilitatorForSuggest oldDictionaryFacilitator) {
mContext = oldDictionaryFacilitator.mContext;
mLocale = oldDictionaryFacilitator.mLocale;
+ mLatchForWaitingLoadingMainDictionary = new CountDownLatch(0);
initForDebug(settingsValues);
// Transfer main dictionary.
setMainDictionary(oldDictionaryFacilitator.mMainDictionary);
@@ -110,6 +139,7 @@ public class DictionaryFacilitatorForSuggest {
final ArrayList<String> dictionaryTypes, final HashMap<String, File> dictionaryFiles) {
mContext = context;
mLocale = locale;
+ mLatchForWaitingLoadingMainDictionary = new CountDownLatch(0);
for (final String dictType : dictionaryTypes) {
if (dictType.equals(Dictionary.TYPE_MAIN)) {
final DictionaryCollection mainDictionary =
@@ -167,9 +197,8 @@ public class DictionaryFacilitatorForSuggest {
}
}
- public void reloadMainDict(final Context context, final Locale locale,
+ private void loadMainDict(final Context context, final Locale locale,
final DictionaryInitializationListener listener) {
- mIsCurrentlyWaitingForMainDictionary = true;
mMainDictionary = null;
if (listener != null) {
listener.onUpdateMainDictionaryAvailability(hasMainDictionary());
@@ -183,7 +212,7 @@ public class DictionaryFacilitatorForSuggest {
if (listener != null) {
listener.onUpdateMainDictionaryAvailability(hasMainDictionary());
}
- mIsCurrentlyWaitingForMainDictionary = false;
+ mLatchForWaitingLoadingMainDictionary.countDown();
}
}.start();
}
@@ -194,9 +223,9 @@ public class DictionaryFacilitatorForSuggest {
return null != mMainDictionary && mMainDictionary.isInitialized();
}
- @UsedForTesting
- public boolean isCurrentlyWaitingForMainDictionary() {
- return mIsCurrentlyWaitingForMainDictionary;
+ public void waitForLoadingMainDictionary(final long timeout, final TimeUnit unit)
+ throws InterruptedException {
+ mLatchForWaitingLoadingMainDictionary.await(timeout, unit);
}
private void setMainDictionary(final Dictionary mainDictionary) {
diff --git a/java/src/com/android/inputmethod/latin/InputPointers.java b/java/src/com/android/inputmethod/latin/InputPointers.java
index 2e638aaf3..c3bcf3785 100644
--- a/java/src/com/android/inputmethod/latin/InputPointers.java
+++ b/java/src/com/android/inputmethod/latin/InputPointers.java
@@ -16,14 +16,16 @@
package com.android.inputmethod.latin;
+import android.util.Log;
+
import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.latin.utils.ResizableIntArray;
-import android.util.Log;
-
// TODO: This class is not thread-safe.
public final class InputPointers {
private static final String TAG = InputPointers.class.getSimpleName();
+ private static final boolean DEBUG_TIME = false;
+
private final int mDefaultCapacity;
private final ResizableIntArray mXCoordinates;
private final ResizableIntArray mYCoordinates;
@@ -38,11 +40,29 @@ public final class InputPointers {
mTimes = new ResizableIntArray(defaultCapacity);
}
- public void addPointer(int index, int x, int y, int pointerId, int time) {
- mXCoordinates.add(index, x);
- mYCoordinates.add(index, y);
- mPointerIds.add(index, pointerId);
- mTimes.add(index, time);
+ private void fillWithLastTimeUntil(final int index) {
+ final int fromIndex = mTimes.getLength();
+ // Fill the gap with the latest time.
+ // See {@link #getTime(int)} and {@link #isValidTimeStamps()}.
+ if (fromIndex <= 0) {
+ return;
+ }
+ final int fillLength = index - fromIndex + 1;
+ if (fillLength <= 0) {
+ return;
+ }
+ final int lastTime = mTimes.get(fromIndex - 1);
+ mTimes.fill(lastTime, fromIndex, fillLength);
+ }
+
+ public void addPointerAt(int index, int x, int y, int pointerId, int time) {
+ mXCoordinates.addAt(index, x);
+ mYCoordinates.addAt(index, y);
+ mPointerIds.addAt(index, pointerId);
+ if (LatinImeLogger.sDBG || DEBUG_TIME) {
+ fillWithLastTimeUntil(index);
+ }
+ mTimes.addAt(index, time);
}
@UsedForTesting
@@ -68,23 +88,6 @@ public final class InputPointers {
}
/**
- * Append the pointers in the specified {@link InputPointers} to the end of this.
- * @param src the source {@link InputPointers} to read the data from.
- * @param startPos the starting index of the pointers in {@code src}.
- * @param length the number of pointers to be appended.
- */
- @UsedForTesting
- void append(InputPointers src, int startPos, int length) {
- if (length == 0) {
- return;
- }
- mXCoordinates.append(src.mXCoordinates, startPos, length);
- mYCoordinates.append(src.mYCoordinates, startPos, length);
- mPointerIds.append(src.mPointerIds, startPos, length);
- mTimes.append(src.mTimes, startPos, length);
- }
-
- /**
* Append the times, x-coordinates and y-coordinates in the specified {@link ResizableIntArray}
* to the end of this.
* @param pointerId the pointer id of the source.
@@ -141,7 +144,7 @@ public final class InputPointers {
}
public int[] getTimes() {
- if (LatinImeLogger.sDBG) {
+ if (LatinImeLogger.sDBG || DEBUG_TIME) {
if (!isValidTimeStamps()) {
throw new RuntimeException("Time stamps are invalid.");
}
@@ -157,10 +160,11 @@ public final class InputPointers {
private boolean isValidTimeStamps() {
final int[] times = mTimes.getPrimitiveArray();
- for (int i = 1; i < getPointerSize(); ++i) {
+ final int size = getPointerSize();
+ for (int i = 1; i < size; ++i) {
if (times[i] < times[i - 1]) {
// dump
- for (int j = 0; j < times.length; ++j) {
+ for (int j = 0; j < size; ++j) {
Log.d(TAG, "--- (" + j + ") " + times[j]);
}
return false;
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index b7f035747..aadb65192 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -89,6 +89,7 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Locale;
+import java.util.concurrent.TimeUnit;
/**
* Input method implementation for Qwerty'ish keyboard.
@@ -519,10 +520,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
new DictionaryFacilitatorForSuggest(currentSettingsValues,
oldDictionaryFacilitator);
// Create Suggest instance with the new dictionary facilitator.
- mInputLogic.mSuggest = new Suggest(suggest /* oldSuggest */, dictionaryFacilitator);
- suggest.close();
+ resetSuggest(new Suggest(suggest /* oldSuggest */, dictionaryFacilitator));
+ } else if (suggest == null) {
+ initSuggestForLocale(locale);
}
- if (currentSettingsValues.mUsePersonalizedDicts) {
+ }
+
+ private void refreshPersonalizationDictionarySession() {
+ if (mSettings.getCurrent().mUsePersonalizedDicts) {
if (mSubtypeSwitcher.isSystemLocaleSameAsLocaleOfAllEnabledSubtypes()) {
final DictionaryFacilitatorForSuggest dictionaryFacilitator =
(mInputLogic.mSuggest == null) ?
@@ -562,33 +567,41 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
} else {
subtypeLocale = switcherSubtypeLocale;
}
+ initSuggestForLocale(subtypeLocale);
+ }
+ private void initSuggestForLocale(final Locale locale) {
final SettingsValues settingsValues = mSettings.getCurrent();
final DictionaryFacilitatorForSuggest oldDictionaryFacilitator =
(mInputLogic.mSuggest == null) ? null : mInputLogic.mSuggest.mDictionaryFacilitator;
// Creates new dictionary facilitator for the new locale.
final DictionaryFacilitatorForSuggest dictionaryFacilitator =
- new DictionaryFacilitatorForSuggest(this /* context */, subtypeLocale,
+ new DictionaryFacilitatorForSuggest(this /* context */, locale,
settingsValues, this /* DictionaryInitializationListener */,
oldDictionaryFacilitator);
- PersonalizationDictionarySessionRegistrar.onConfigurationChanged(
- this, getResources().getConfiguration(), dictionaryFacilitator);
- final Suggest newSuggest = new Suggest(subtypeLocale, dictionaryFacilitator);
+ final Suggest newSuggest = new Suggest(locale, dictionaryFacilitator);
if (settingsValues.mCorrectionEnabled) {
newSuggest.setAutoCorrectionThreshold(settingsValues.mAutoCorrectionThreshold);
}
+ resetSuggest(newSuggest);
+ }
+
+ /* package private */ void resetSuggestMainDict() {
+ final DictionaryFacilitatorForSuggest oldDictionaryFacilitator =
+ mInputLogic.mSuggest.mDictionaryFacilitator;
+ final DictionaryFacilitatorForSuggest dictionaryFacilitator =
+ new DictionaryFacilitatorForSuggest(this /* listener */, oldDictionaryFacilitator);
+ resetSuggest(new Suggest(mInputLogic.mSuggest /* oldSuggest */, dictionaryFacilitator));
+ }
+
+ private void resetSuggest(final Suggest newSuggest) {
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
ResearchLogger.getInstance().initDictionary(newSuggest.mDictionaryFacilitator);
}
final Suggest oldSuggest = mInputLogic.mSuggest;
mInputLogic.mSuggest = newSuggest;
if (oldSuggest != null) oldSuggest.close();
- }
-
- /* package private */ void resetSuggestMainDict() {
- final Locale subtypeLocale = mSubtypeSwitcher.getCurrentSubtypeLocale();
- mInputLogic.mSuggest.mDictionaryFacilitator.reloadMainDict(this, subtypeLocale,
- this /* SuggestInitializationListener */);
+ refreshPersonalizationDictionarySession();
}
@Override
@@ -1789,14 +1802,20 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// DO NOT USE THIS for any other purpose than testing. This is information private to LatinIME.
@UsedForTesting
- /* package for test */ boolean isCurrentlyWaitingForMainDictionary() {
- return mInputLogic.mSuggest.mDictionaryFacilitator.isCurrentlyWaitingForMainDictionary();
+ /* package for test */ void waitForMainDictionary(final long timeout, final TimeUnit unit)
+ throws InterruptedException {
+ mInputLogic.mSuggest.mDictionaryFacilitator.waitForLoadingMainDictionary(timeout, unit);
}
// DO NOT USE THIS for any other purpose than testing. This can break the keyboard badly.
@UsedForTesting
- /* package for test */ void replaceMainDictionaryForTest(final Locale locale) {
- mInputLogic.mSuggest.mDictionaryFacilitator.reloadMainDict(this, locale, null);
+ /* package for test */ void replaceDictionariesForTest(final Locale locale) {
+ final DictionaryFacilitatorForSuggest oldDictionaryFacilitator =
+ mInputLogic.mSuggest.mDictionaryFacilitator;
+ final DictionaryFacilitatorForSuggest dictionaryFacilitator =
+ new DictionaryFacilitatorForSuggest(this, locale, mSettings.getCurrent(),
+ this /* listener */, oldDictionaryFacilitator);
+ resetSuggest(new Suggest(locale, dictionaryFacilitator));
}
public void debugDumpStateAndCrashWithException(final String context) {
diff --git a/java/src/com/android/inputmethod/latin/RichInputConnection.java b/java/src/com/android/inputmethod/latin/RichInputConnection.java
index c6049da9f..79b91f32d 100644
--- a/java/src/com/android/inputmethod/latin/RichInputConnection.java
+++ b/java/src/com/android/inputmethod/latin/RichInputConnection.java
@@ -684,6 +684,10 @@ public final class RichInputConnection {
&& !settingsValues.isWordConnector(codePointBeforeCursor)) {
return true;
}
+ return isCursorFollowedByWordCharacter(settingsValues);
+ }
+
+ public boolean isCursorFollowedByWordCharacter(final SettingsValues settingsValues) {
final CharSequence after = getTextAfterCursor(1, 0);
if (!TextUtils.isEmpty(after) && !settingsValues.isWordSeparator(after.charAt(0))
&& !settingsValues.isWordConnector(after.charAt(0))) {
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index f078c7346..b4f2d1a58 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -186,7 +186,7 @@ public final class WordComposer {
// (See {@link #setBatchInputWord}).
if (!mIsBatchMode) {
// TODO: Set correct pointer id and time
- mInputPointers.addPointer(newIndex, keyX, keyY, 0, 0);
+ mInputPointers.addPointerAt(newIndex, keyX, keyY, 0, 0);
}
}
mIsFirstCharCapitalized = isFirstCharCapitalized(
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index cc42d8785..968129a96 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -813,7 +813,8 @@ public final class InputLogic {
}
}
if (settingsValues.isSuggestionStripVisible()
- && settingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces) {
+ && settingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces
+ && !mConnection.isCursorFollowedByWordCharacter(settingsValues)) {
restartSuggestionsOnWordTouchedByCursor(settingsValues,
deleteCountAtStart - mDeleteCount /* offset */,
true /* includeResumedWordInSuggestions */, keyboardSwitcher);
@@ -1114,8 +1115,19 @@ public final class InputLogic {
keyboardSwitcher.getKeyboard());
mWordComposer.setCursorPositionWithinWord(
typedWord.codePointCount(0, numberOfCharsInWordBeforeCursor));
- mConnection.setComposingRegion(expectedCursorPosition - numberOfCharsInWordBeforeCursor,
+ // TODO: Change these lines to setComposingRegion(cursorPosition,
+ // cursorPosition + range.getNumberOfCharsInWordAfterCursor());
+ if (0 != offset) {
+ // Backspace was pressed. We are at the end of a word, and we don't know the cursor
+ // position for sure, so use relative methods.
+ mConnection.deleteSurroundingText(numberOfCharsInWordBeforeCursor, 0);
+ mConnection.setComposingText(typedWord, 1);
+ } else {
+ // This is recorrection. The cursor position is reasonably reliable, and the cursor
+ // may be in the middle of a word so use setComposingRegion.
+ mConnection.setComposingRegion(expectedCursorPosition - numberOfCharsInWordBeforeCursor,
expectedCursorPosition + range.getNumberOfCharsInWordAfterCursor());
+ }
if (suggestions.isEmpty()) {
// We come here if there weren't any suggestion spans on this word. We will try to
// compute suggestions for it instead.
diff --git a/java/src/com/android/inputmethod/latin/utils/ResizableIntArray.java b/java/src/com/android/inputmethod/latin/utils/ResizableIntArray.java
index 7c6fe93ac..64c9e2cff 100644
--- a/java/src/com/android/inputmethod/latin/utils/ResizableIntArray.java
+++ b/java/src/com/android/inputmethod/latin/utils/ResizableIntArray.java
@@ -34,7 +34,7 @@ public final class ResizableIntArray {
throw new ArrayIndexOutOfBoundsException("length=" + mLength + "; index=" + index);
}
- public void add(final int index, final int val) {
+ public void addAt(final int index, final int val) {
if (index < mLength) {
mArray[index] = val;
} else {