From 6c2f9f5ba7afedc183086d4ee3a7aa50b3866edc Mon Sep 17 00:00:00 2001
From: Amith Yamasani <yamasani@google.com>
Date: Fri, 12 Mar 2010 17:25:42 -0800
Subject: [PATCH] Fix bug: 2512075 : Current input language resets to first in
 list on orientation change

Have separate variables for system locale and input locale.
---
 .../android/inputmethod/latin/LatinIME.java   | 22 +++++++++++--------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 8754690da9..ffa7b0a4b7 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -164,7 +164,8 @@ public class LatinIME extends InputMethodService
 
     Resources mResources;
 
-    private String mLocale;
+    private String mInputLocale;
+    private String mSystemLocale;
     private LanguageSwitcher mLanguageSwitcher;
 
     private StringBuilder mComposing = new StringBuilder();
@@ -277,7 +278,7 @@ public class LatinIME extends InputMethodService
         mLanguageSwitcher.loadLocales(prefs);
         mKeyboardSwitcher = new KeyboardSwitcher(this, this);
         mKeyboardSwitcher.setLanguageSwitcher(mLanguageSwitcher);
-        boolean enableMultipleLanguages = mLanguageSwitcher.getLocaleCount() > 0;
+        mSystemLocale = conf.locale.toString();
         String inputLanguage = mLanguageSwitcher.getInputLanguage();
         if (inputLanguage == null) {
             inputLanguage = conf.locale.toString();
@@ -306,7 +307,7 @@ public class LatinIME extends InputMethodService
     }
 
     private void initSuggest(String locale) {
-        mLocale = locale;
+        mInputLocale = locale;
 
         Resources orig = getResources();
         Configuration conf = orig.getConfiguration();
@@ -321,14 +322,14 @@ public class LatinIME extends InputMethodService
         mSuggest = new Suggest(this, R.raw.main);
         updateAutoTextEnabled(saveLocale);
         if (mUserDictionary != null) mUserDictionary.close();
-        mUserDictionary = new UserDictionary(this, mLocale);
+        mUserDictionary = new UserDictionary(this, mInputLocale);
         if (mContactsDictionary == null) {
             mContactsDictionary = new ContactsDictionary(this);
         }
         if (mAutoDictionary != null) {
             mAutoDictionary.close();
         }
-        mAutoDictionary = new AutoDictionary(this, this, mLocale);
+        mAutoDictionary = new AutoDictionary(this, this, mInputLocale);
         mSuggest.setUserDictionary(mUserDictionary);
         mSuggest.setContactsDictionary(mContactsDictionary);
         mSuggest.setAutoDictionary(mAutoDictionary);
@@ -354,10 +355,12 @@ public class LatinIME extends InputMethodService
     @Override
     public void onConfigurationChanged(Configuration conf) {
         // If the system locale changes and is different from the saved
-        // locale (mLocale), then reload the input locale list from the 
+        // locale (mSystemLocale), then reload the input locale list from the
         // latin ime settings (shared prefs) and reset the input locale
         // to the first one.
-        if (!TextUtils.equals(conf.locale.toString(), mLocale)) {
+        final String systemLocale = conf.locale.toString();
+        if (!TextUtils.equals(systemLocale, mSystemLocale)) {
+            mSystemLocale = systemLocale;
             if (mLanguageSwitcher != null) {
                 mLanguageSwitcher.loadLocales(
                         PreferenceManager.getDefaultSharedPreferences(this));
@@ -1783,7 +1786,8 @@ public class LatinIME extends InputMethodService
 
     private void updateAutoTextEnabled(Locale systemLocale) {
         if (mSuggest == null) return;
-        boolean different = !systemLocale.getLanguage().equalsIgnoreCase(mLocale.substring(0, 2));
+        boolean different =
+                !systemLocale.getLanguage().equalsIgnoreCase(mInputLocale.substring(0, 2));
         mSuggest.setAutoTextEnabled(!different && mQuickFixes);
     }
 
@@ -1822,7 +1826,7 @@ public class LatinIME extends InputMethodService
         ArrayList<String> voiceInputSupportedLocales =
                 newArrayList(supportedLocalesString.split("\\s+"));
 
-        mLocaleSupportedForVoiceInput = voiceInputSupportedLocales.contains(mLocale);
+        mLocaleSupportedForVoiceInput = voiceInputSupportedLocales.contains(mInputLocale);
 
         mShowSuggestions = sp.getBoolean(PREF_SHOW_SUGGESTIONS, true);
 
-- 
GitLab