Merge "Display the language name on the spacebar if the full display locale name is too longer than the space bar"
diff --git a/java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java b/java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java
index 73f0b7a..e14a49c 100644
--- a/java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java
+++ b/java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java
@@ -29,6 +29,7 @@
 // This class is used only when the IME doesn't use method.xml for language switching.
 public class LanguageSwitcherProxy implements SharedPreferences.OnSharedPreferenceChangeListener {
     private static final LanguageSwitcherProxy sInstance = new LanguageSwitcherProxy();
+    private LatinIME mService;
     private LanguageSwitcher mLanguageSwitcher;
     private SharedPreferences mPrefs;
 
@@ -43,6 +44,7 @@
         sInstance.mLanguageSwitcher = new LanguageSwitcher(service);
         sInstance.mLanguageSwitcher.loadLocales(prefs, conf.locale);
         sInstance.mPrefs = prefs;
+        sInstance.mService = service;
         prefs.registerOnSharedPreferenceChangeListener(sInstance);
     }
 
@@ -80,6 +82,9 @@
         if (key.equals(Settings.PREF_SELECTED_LANGUAGES)
                 || key.equals(Settings.PREF_INPUT_LANGUAGE)) {
             mLanguageSwitcher.loadLocales(prefs, null);
+            if (mService != null) {
+                mService.onRefreshKeyboard();
+            }
         }
     }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
index 2859367..c279769 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
@@ -297,9 +297,12 @@
             paint.setColor(getSpacebarTextColor(mSpacebarTextColor, textFadeFactor));
             canvas.drawText(language, width / 2, baseline - descent, paint);
 
-            // Put arrows that are already layed out on either side of the text
+            // Put arrows that are already laid out on either side of the text
+            // Because language switch is disabled on phone and number layouts, hide arrows.
+            // TODO: Sort out how to enable language switch on these layouts.
             if (mSubtypeSwitcher.useSpacebarLanguageSwitcher()
-                    && mSubtypeSwitcher.getEnabledKeyboardLocaleCount() > 1) {
+                    && mSubtypeSwitcher.getEnabledKeyboardLocaleCount() > 1
+                    && !(isPhoneKeyboard() || isNumberKeyboard())) {
                 mButtonArrowLeftIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor));
                 mButtonArrowRightIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor));
                 mButtonArrowLeftIcon.draw(canvas);
@@ -352,6 +355,10 @@
     }
 
     public boolean shouldTriggerSpacebarSlidingLanguageSwitch(int diff) {
+        // On phone and number layouts, sliding language switch is disabled.
+        // TODO: Sort out how to enable language switch on these layouts.
+        if (isPhoneKeyboard() || isNumberKeyboard())
+            return false;
         return Math.abs(diff) > mSpacebarLanguageSwitchThreshold;
     }