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;
}