summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/InputMethodManagerService.java
diff options
context:
space:
mode:
authorsatok <satok@google.com>2011-10-06 12:22:36 +0900
committersatok <satok@google.com>2011-10-10 15:49:22 +0900
commitdc9ddaee9a710cf6f5d7f37350650f82e706c706 (patch)
tree902346363c3d3ff83549442c6026ba1aec253663 /services/java/com/android/server/InputMethodManagerService.java
parent2e12977ad61d985df741d22cf5907f775ca6c048 (diff)
Fix the behavior for choosing new default IME not to choose an auxiliary IME as the default IME
Bug: 5420127 Change-Id: I3649de36806fc24e1c85c2b15db5e37acad1f120
Diffstat (limited to 'services/java/com/android/server/InputMethodManagerService.java')
-rw-r--r--services/java/com/android/server/InputMethodManagerService.java17
1 files changed, 12 insertions, 5 deletions
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java
index 3e1fb9f7c243..6ddbf5a5a95f 100644
--- a/services/java/com/android/server/InputMethodManagerService.java
+++ b/services/java/com/android/server/InputMethodManagerService.java
@@ -574,7 +574,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
}
}
if (defIm == null && mMethodList.size() > 0) {
- defIm = mMethodList.get(0);
+ defIm = getMostApplicableDefaultIMELocked();
Slog.i(TAG, "No default found, using " + defIm.getId());
}
if (defIm != null) {
@@ -1925,19 +1925,26 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
return subtypes;
}
- private boolean chooseNewDefaultIMELocked() {
+ private InputMethodInfo getMostApplicableDefaultIMELocked() {
List<InputMethodInfo> enabled = mSettings.getEnabledInputMethodListLocked();
if (enabled != null && enabled.size() > 0) {
// We'd prefer to fall back on a system IME, since that is safer.
int i=enabled.size();
while (i > 0) {
i--;
- if ((enabled.get(i).getServiceInfo().applicationInfo.flags
- & ApplicationInfo.FLAG_SYSTEM) != 0) {
+ final InputMethodInfo imi = enabled.get(i);
+ if (isSystemIme(imi) && !imi.isAuxiliaryIme()) {
break;
}
}
- InputMethodInfo imi = enabled.get(i);
+ return enabled.get(i);
+ }
+ return null;
+ }
+
+ private boolean chooseNewDefaultIMELocked() {
+ final InputMethodInfo imi = getMostApplicableDefaultIMELocked();
+ if (imi != null) {
if (DEBUG) {
Slog.d(TAG, "New default IME was selected: " + imi.getId());
}