Merge "Set the locale for opening an asset"
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_delete_rtl.png b/java/res/drawable-hdpi/sym_bkeyboard_delete_rtl.png
deleted file mode 100644
index 102eac7..0000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_delete_rtl.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_delete_rtl.png b/java/res/drawable-hdpi/sym_keyboard_delete_rtl.png
deleted file mode 100644
index a508452..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_delete_rtl.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_delete_rtl_holo.png b/java/res/drawable-hdpi/sym_keyboard_delete_rtl_holo.png
deleted file mode 100644
index a77e4a0..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_delete_rtl_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_delete_rtl.png b/java/res/drawable-mdpi/sym_bkeyboard_delete_rtl.png
deleted file mode 100644
index 32253ea..0000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_delete_rtl.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_delete_rtl.png b/java/res/drawable-mdpi/sym_keyboard_delete_rtl.png
deleted file mode 100644
index d436c23..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_delete_rtl.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_delete_rtl_holo.png b/java/res/drawable-mdpi/sym_keyboard_delete_rtl_holo.png
deleted file mode 100644
index 2e75d85..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_delete_rtl_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/sym_keyboard_delete_rtl_holo.png b/java/res/drawable-sw600dp-hdpi/sym_keyboard_delete_rtl_holo.png
deleted file mode 100644
index 5c19f32..0000000
--- a/java/res/drawable-sw600dp-hdpi/sym_keyboard_delete_rtl_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_delete_rtl_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_delete_rtl_holo.png
deleted file mode 100644
index 9948541..0000000
--- a/java/res/drawable-sw600dp-mdpi/sym_keyboard_delete_rtl_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/sym_keyboard_delete_rtl_holo.png b/java/res/drawable-sw600dp-xhdpi/sym_keyboard_delete_rtl_holo.png
deleted file mode 100644
index f3310a1..0000000
--- a/java/res/drawable-sw600dp-xhdpi/sym_keyboard_delete_rtl_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_delete_rtl.png b/java/res/drawable-xhdpi/sym_bkeyboard_delete_rtl.png
deleted file mode 100644
index 23aee2b..0000000
--- a/java/res/drawable-xhdpi/sym_bkeyboard_delete_rtl.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_delete_rtl.png b/java/res/drawable-xhdpi/sym_keyboard_delete_rtl.png
deleted file mode 100644
index 3f9d3dd..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_delete_rtl.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_delete_rtl_holo.png b/java/res/drawable-xhdpi/sym_keyboard_delete_rtl_holo.png
deleted file mode 100644
index 1f4890c..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_delete_rtl_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/values-ar/donottranslate-altchars.xml b/java/res/values-ar/donottranslate-altchars.xml
index e49a840..b72ed50 100644
--- a/java/res/values-ar/donottranslate-altchars.xml
+++ b/java/res/values-ar/donottranslate-altchars.xml
@@ -56,11 +56,14 @@
     <string name="alternates_for_symbols_9">9</string>
     <string name="alternates_for_symbols_0">0,ⁿ,∅</string>
     <string name="keylabel_for_symbols_comma">\u060c</string>
+    <string name="keylabel_for_symbols_f1">\u060c</string>
     <string name="keylabel_for_symbols_question">\u061f</string>
     <string name="keylabel_for_symbols_semicolon">\u061b</string>
     <!-- \u066a: ARABIC PERCENT SIGN -->
     <string name="keylabel_for_symbols_percent">\u066a</string>
     <string name="alternates_for_symbols_comma">,</string>
+    <!-- @icon/5 is iconsSettingsKey -->
+    <string name="alternates_for_symbols_f1">"\\,,\@icon/5|\@integer/key_settings"</string>
     <string name="alternates_for_symbols_question">\?,¿</string>
     <string name="alternates_for_symbols_semicolon">;</string>
     <string name="alternates_for_symbols_percent">%,‰</string>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index d79338a..4c3ea83 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -155,7 +155,6 @@
         <attr name="iconToSymbolKey" format="reference" />
         <attr name="iconToSymbolKeyWithShortcut" format="reference" />
         <attr name="iconDeleteKey" format="reference" />
-        <attr name="iconDeleteRtlKey" format="reference" />
         <attr name="iconSettingsKey" format="reference" />
         <attr name="iconShortcutKey" format="reference" />
         <attr name="iconSpaceKey" format="reference" />
@@ -209,25 +208,24 @@
             <enum name="iconToSymbolKey" value="2" />
             <enum name="iconToSymbolKeyWithShortcut" value="3" />
             <enum name="iconDeleteKey" value="4" />
-            <enum name="iconDeleteRtlKey" value="5" />
-            <enum name="iconSettingsKey" value="6" />
-            <enum name="iconShortcutKey" value="7" />
-            <enum name="iconSpaceKey" value="8" />
-            <enum name="iconReturnKey" value="9" />
-            <enum name="iconSearchKey" value="10" />
-            <enum name="iconTabKey" value="11" />
+            <enum name="iconSettingsKey" value="5" />
+            <enum name="iconShortcutKey" value="6" />
+            <enum name="iconSpaceKey" value="7" />
+            <enum name="iconReturnKey" value="8" />
+            <enum name="iconSearchKey" value="9" />
+            <enum name="iconTabKey" value="10" />
         </attr>
         <!-- Shift key icon for shifted state -->
         <attr name="keyIconShifted" format="enum">
             <!-- This should be aligned with KeyboardIcons.ICON_SHIFTED_* -->
-            <enum name="iconShiftedShiftKey" value="12" />
+            <enum name="iconShiftedShiftKey" value="11" />
         </attr>
         <!-- The icon to show in the popup preview. -->
         <attr name="keyIconPreview" format="enum">
             <!-- This should be aligned with KeyboardIcons.ICON_PREVIEW_* -->
-            <enum name="iconPreviewTabKey" value="13" />
-            <enum name="iconPreviewSettingsKey" value="14" />
-            <enum name="iconPreviewShortcutKey" value="15" />
+            <enum name="iconPreviewTabKey" value="12" />
+            <enum name="iconPreviewSettingsKey" value="13" />
+            <enum name="iconPreviewShortcutKey" value="14" />
         </attr>
         <!-- The key style to specify a set of key attributes defined by <key_style/> -->
         <attr name="keyStyle" format="string" />
diff --git a/java/res/values/donottranslate-altchars.xml b/java/res/values/donottranslate-altchars.xml
index f3084d4..38d406c 100644
--- a/java/res/values/donottranslate-altchars.xml
+++ b/java/res/values/donottranslate-altchars.xml
@@ -78,10 +78,13 @@
     <string name="alternates_for_symbols_9"></string>
     <string name="alternates_for_symbols_0">ⁿ,∅</string>
     <string name="keylabel_for_symbols_comma">,</string>
+    <string name="keylabel_for_symbols_f1">,</string>
     <string name="keylabel_for_symbols_question">\?</string>
     <string name="keylabel_for_symbols_semicolon">;</string>
     <string name="keylabel_for_symbols_percent">%</string>
     <string name="alternates_for_symbols_comma"></string>
+    <!-- @icon/5 is iconsSettingsKey -->
+    <string name="alternates_for_symbols_f1">\@icon/5|\@integer/key_settings</string>
     <string name="alternates_for_symbols_question">¿</string>
     <string name="alternates_for_symbols_semicolon"></string>
     <string name="alternates_for_symbols_percent">‰</string>
diff --git a/java/res/values/keyboard-icons-black.xml b/java/res/values/keyboard-icons-black.xml
index d527c15..ff758dc 100644
--- a/java/res/values/keyboard-icons-black.xml
+++ b/java/res/values/keyboard-icons-black.xml
@@ -24,8 +24,6 @@
         <item name="iconShiftKey">@drawable/sym_bkeyboard_shift</item>
         <item name="iconToSymbolKeyWithShortcut">@drawable/sym_bkeyboard_123_mic</item>
         <item name="iconDeleteKey">@drawable/sym_bkeyboard_delete</item>
-        <!-- TODO: update this icon drawable -->
-        <item name="iconDeleteRtlKey">@drawable/sym_bkeyboard_delete_rtl</item>
         <item name="iconSettingsKey">@drawable/sym_bkeyboard_settings</item>
         <item name="iconShortcutKey">@drawable/sym_bkeyboard_mic</item>
         <item name="iconSpaceKey">@drawable/sym_bkeyboard_space</item>
diff --git a/java/res/values/keyboard-icons-ics.xml b/java/res/values/keyboard-icons-ics.xml
index 3d63a9e..62859e3 100644
--- a/java/res/values/keyboard-icons-ics.xml
+++ b/java/res/values/keyboard-icons-ics.xml
@@ -23,8 +23,6 @@
         <item name="iconShiftKey">@drawable/sym_keyboard_shift_holo</item>
         <item name="iconToSymbolKeyWithShortcut">@drawable/sym_keyboard_123_mic_holo</item>
         <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo</item>
-        <!-- TODO: update this icon drawable -->
-        <item name="iconDeleteRtlKey">@drawable/sym_keyboard_delete_rtl_holo</item>
         <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo</item>
         <item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo</item>
         <item name="iconSpaceKey">@drawable/sym_keyboard_space_holo</item>
diff --git a/java/res/values/keyboard-icons-white.xml b/java/res/values/keyboard-icons-white.xml
index c3889c3..3c28cb7 100644
--- a/java/res/values/keyboard-icons-white.xml
+++ b/java/res/values/keyboard-icons-white.xml
@@ -20,8 +20,6 @@
         <item name="iconShiftKey">@drawable/sym_keyboard_shift</item>
         <item name="iconToSymbolKeyWithShortcut">@drawable/sym_keyboard_123_mic</item>
         <item name="iconDeleteKey">@drawable/sym_keyboard_delete</item>
-        <!-- TODO: update this icon drawable -->
-        <item name="iconDeleteRtlKey">@drawable/sym_keyboard_delete_rtl</item>
         <item name="iconSettingsKey">@drawable/sym_keyboard_settings</item>
         <item name="iconShortcutKey">@drawable/sym_keyboard_mic</item>
         <item name="iconSpaceKey">@drawable/sym_keyboard_space</item>
diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml
index b813e6b..f943099 100644
--- a/java/res/xml-sw600dp/kbd_key_styles.xml
+++ b/java/res/xml-sw600dp/kbd_key_styles.xml
@@ -38,7 +38,7 @@
             <key-style
                 latin:styleName="settingsPopupStyle"
                 latin:keyLabelOption="hasPopupHint"
-                latin:popupCharacters="\@icon/6|\@integer/key_settings"
+                latin:popupCharacters="\@icon/5|\@integer/key_settings"
                 latin:parentStyle="functionalKeyStyle" />
         </default>
     </switch>
@@ -50,24 +50,12 @@
         latin:keyIconShifted="iconShiftedShiftKey"
         latin:parentStyle="functionalKeyStyle"
         latin:isSticky="true" />
-    <switch>
-        <case latin:languageCode="ar|iw">
-            <key-style
-                latin:styleName="deleteKeyStyle"
-                latin:code="@integer/key_delete"
-                latin:keyIcon="iconDeleteRtlKey"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isRepeatable="true" />
-        </case>
-        <default>
-            <key-style
-                latin:styleName="deleteKeyStyle"
-                latin:code="@integer/key_delete"
-                latin:keyIcon="iconDeleteKey"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isRepeatable="true" />
-        </default>
-    </switch>
+    <key-style
+        latin:styleName="deleteKeyStyle"
+        latin:code="@integer/key_delete"
+        latin:keyIcon="iconDeleteKey"
+        latin:parentStyle="functionalKeyStyle"
+        latin:isRepeatable="true" />
     <key-style
         latin:styleName="returnKeyStyle"
         latin:code="@integer/key_return"
diff --git a/java/res/xml-sw768dp/kbd_key_styles.xml b/java/res/xml-sw768dp/kbd_key_styles.xml
index 12ec0e7..6e4818d 100644
--- a/java/res/xml-sw768dp/kbd_key_styles.xml
+++ b/java/res/xml-sw768dp/kbd_key_styles.xml
@@ -32,24 +32,12 @@
         latin:keyIconShifted="iconShiftedShiftKey"
         latin:parentStyle="functionalKeyStyle"
         latin:isSticky="true" />
-    <switch>
-        <case latin:languageCode="ar|iw">
-            <key-style
-                latin:styleName="deleteKeyStyle"
-                latin:code="@integer/key_delete"
-                latin:keyIcon="iconDeleteRtlKey"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isRepeatable="true" />
-        </case>
-        <default>
-            <key-style
-                latin:styleName="deleteKeyStyle"
-                latin:code="@integer/key_delete"
-                latin:keyIcon="iconDeleteKey"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isRepeatable="true" />
-        </default>
-    </switch>
+    <key-style
+        latin:styleName="deleteKeyStyle"
+        latin:code="@integer/key_delete"
+        latin:keyIcon="iconDeleteKey"
+        latin:parentStyle="functionalKeyStyle"
+        latin:isRepeatable="true" />
     <key-style
         latin:styleName="returnKeyStyle"
         latin:code="@integer/key_return"
diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml
index c40481c..6436b27 100644
--- a/java/res/xml/kbd_key_styles.xml
+++ b/java/res/xml/kbd_key_styles.xml
@@ -33,6 +33,9 @@
             <key-style
                 latin:styleName="settingsPopupStyle"
                 latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="symbolsF1PopupStyle"
+                latin:parentStyle="functionalKeyStyle" />
         </case>
         <case
             latin:clobberSettingsKey="false"
@@ -41,13 +44,21 @@
             <key-style
                 latin:styleName="settingsPopupStyle"
                 latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="symbolsF1PopupStyle"
+                latin:parentStyle="functionalKeyStyle" />
         </case>
         <!-- clobberSettingsKey="false" and hasSettingsKey="false" -->
         <default>
             <key-style
                 latin:styleName="settingsPopupStyle"
                 latin:keyLabelOption="hasPopupHint"
-                latin:popupCharacters="\@icon/6|\@integer/key_settings"
+                latin:popupCharacters="\@icon/5|\@integer/key_settings"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="symbolsF1PopupStyle"
+                latin:keyLabelOption="hasPopupHint"
+                latin:popupCharacters="@string/alternates_for_symbols_f1"
                 latin:parentStyle="functionalKeyStyle" />
         </default>
     </switch>
@@ -59,26 +70,12 @@
         latin:keyIconShifted="iconShiftedShiftKey"
         latin:parentStyle="functionalKeyStyle"
         latin:isSticky="true" />
-    <switch>
-        <case
-            latin:languageCode="ar|iw"
-        >
-            <key-style
-                latin:styleName="deleteKeyStyle"
-                latin:code="@integer/key_delete"
-                latin:keyIcon="iconDeleteRtlKey"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isRepeatable="true" />
-        </case>
-        <default>
-            <key-style
-                latin:styleName="deleteKeyStyle"
-                latin:code="@integer/key_delete"
-                latin:keyIcon="iconDeleteKey"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isRepeatable="true" />
-        </default>
-    </switch>
+    <key-style
+        latin:styleName="deleteKeyStyle"
+        latin:code="@integer/key_delete"
+        latin:keyIcon="iconDeleteKey"
+        latin:parentStyle="functionalKeyStyle"
+        latin:isRepeatable="true" />
     <!-- Return key style -->
     <switch>
         <case
diff --git a/java/res/xml/kbd_symbols_f1.xml b/java/res/xml/kbd_symbols_f1.xml
index 3c7346c..cebb4f0 100644
--- a/java/res/xml/kbd_symbols_f1.xml
+++ b/java/res/xml/kbd_symbols_f1.xml
@@ -36,10 +36,9 @@
                 <!-- latin:hasVoiceKey="false" -->
                 <default>
                     <Key
-                        latin:keyLabel="@string/keylabel_for_symbols_comma"
-                        latin:popupCharacters="@string/alternates_for_symbols_comma"
+                        latin:keyLabel="@string/keylabel_for_symbols_f1"
                         latin:keyWidth="9.2%p"
-                        latin:keyStyle="settingsPopupStyle" />
+                        latin:keyStyle="symbolsF1PopupStyle" />
                 </default>
             </switch>
         </case>
@@ -55,9 +54,8 @@
                 <!-- latin:hasVoiceKey="false" -->
                 <default>
                     <Key
-                        latin:keyLabel="@string/keylabel_for_symbols_comma"
-                        latin:popupCharacters="@string/alternates_for_symbols_comma"
-                        latin:keyStyle="settingsPopupStyle" />
+                        latin:keyLabel="@string/keylabel_for_symbols_f1"
+                        latin:keyStyle="symbolsF1PopupStyle" />
                 </default>
             </switch>
         </default>
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 71c4896..d23b8ff 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -526,7 +526,7 @@
         canvas.translate(-bgX, -bgY);
 
         // Draw key top visuals.
-        final int keyWidth = key.mWidth;
+        final int keyWidth = key.mWidth - key.mVisualInsetsLeft - key.mVisualInsetsRight;
         final int keyHeight = key.mHeight;
         final float centerX = keyWidth * 0.5f;
         final float centerY = keyHeight * 0.5f;
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
index 6256e7f..02c261b 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
@@ -34,21 +34,20 @@
     private static final int ICON_TO_SYMBOL_KEY = 2;
     private static final int ICON_TO_SYMBOL_KEY_WITH_SHORTCUT = 3;
     private static final int ICON_DELETE_KEY = 4;
-    private static final int ICON_DELETE_RTL_KEY = 5;
-    private static final int ICON_SETTINGS_KEY = 6; // This is also represented as "@icon/6" in xml.
-    private static final int ICON_SHORTCUT_KEY = 7;
-    private static final int ICON_SPACE_KEY = 8;
-    private static final int ICON_RETURN_KEY = 9;
-    private static final int ICON_SEARCH_KEY = 10;
-    private static final int ICON_TAB_KEY = 11;
+    private static final int ICON_SETTINGS_KEY = 5; // This is also represented as "@icon/5" in xml.
+    private static final int ICON_SHORTCUT_KEY = 6;
+    private static final int ICON_SPACE_KEY = 7;
+    private static final int ICON_RETURN_KEY = 8;
+    private static final int ICON_SEARCH_KEY = 9;
+    private static final int ICON_TAB_KEY = 10;
     // This should be aligned with Keyboard.keyIconShifted enum.
-    private static final int ICON_SHIFTED_SHIFT_KEY = 12;
+    private static final int ICON_SHIFTED_SHIFT_KEY = 11;
     // This should be aligned with Keyboard.keyIconPreview enum.
-    private static final int ICON_PREVIEW_TAB_KEY = 13;
-    private static final int ICON_PREVIEW_SETTINGS_KEY = 14;
-    private static final int ICON_PREVIEW_SHORTCUT_KEY = 15;
+    private static final int ICON_PREVIEW_TAB_KEY = 12;
+    private static final int ICON_PREVIEW_SETTINGS_KEY = 13;
+    private static final int ICON_PREVIEW_SHORTCUT_KEY = 14;
 
-    private static final int ICON_LAST = 15;
+    private static final int ICON_LAST = 14;
 
     private final Drawable mIcons[] = new Drawable[ICON_LAST + 1];
 
@@ -62,8 +61,6 @@
             return ICON_TO_SYMBOL_KEY_WITH_SHORTCUT;
         case R.styleable.Keyboard_iconDeleteKey:
             return ICON_DELETE_KEY;
-        case R.styleable.Keyboard_iconDeleteRtlKey:
-            return ICON_DELETE_RTL_KEY;
         case R.styleable.Keyboard_iconSettingsKey:
             return ICON_SETTINGS_KEY;
         case R.styleable.Keyboard_iconShortcutKey:
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 5d8fd34..64f7e60 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -546,8 +546,9 @@
         // know now whether this is a password text field, because we need to know now whether we
         // want to enable the voice button.
         final VoiceProxy voiceIme = mVoiceProxy;
-        voiceIme.resetVoiceStates(InputTypeCompatUtils.isPasswordInputType(attribute.inputType)
-                || InputTypeCompatUtils.isVisiblePasswordInputType(attribute.inputType));
+        final int inputType = (attribute != null) ? attribute.inputType : 0;
+        voiceIme.resetVoiceStates(InputTypeCompatUtils.isPasswordInputType(inputType)
+                || InputTypeCompatUtils.isVisiblePasswordInputType(inputType));
 
         initializeInputAttributes(attribute);