Always clear hashcodes when input method settings is changed

Change-Id: Ia2a5d3a856f0ce9e1c81052397e3d704a3b6b396
This commit is contained in:
satok
2011-01-19 23:47:13 +09:00
parent b213d30d2c
commit 517c10dd9c

View File

@@ -177,12 +177,20 @@ public class InputMethodAndSubtypeUtil {
enabledIMEAndSubtypesMap.put(imiId, new HashSet<String>());
}
HashSet<String> subtypesSet = enabledIMEAndSubtypesMap.get(imiId);
boolean subtypeCleared = false;
for (InputMethodSubtype subtype : imi.getSubtypes()) {
final String subtypeHashCodeStr = String.valueOf(subtype.hashCode());
CheckBoxPreference subtypePref = (CheckBoxPreference) context.findPreference(
imiId + subtypeHashCodeStr);
// In the Configure input method screen which does not have subtype preferences.
if (subtypePref == null) continue;
// Once subtype checkbox is found, subtypeSet needs to be cleared.
// Because of system change, hashCode value could have been changed.
if (!subtypeCleared) {
subtypesSet.clear();
subtypeCleared = true;
}
if (subtypePref.isChecked()) {
subtypesSet.add(subtypeHashCodeStr);
if (isCurrentInputMethod) {