diff options
| author | satok <satok@google.com> | 2011-01-25 00:11:47 +0900 |
|---|---|---|
| committer | satok <satok@google.com> | 2011-01-25 00:52:53 +0900 |
| commit | 57ffc00239edcfe733832771e1429fca20182207 (patch) | |
| tree | 1698e6deb57a849aac26d3a39a2ed55a03918836 /services/java/com/android/server/InputMethodManagerService.java | |
| parent | 9c265fcc846699050bee169f60defff4f5a73b5c (diff) | |
Add a way that subtype will be excluded from a last input method
Bug: 3382702
- Added SUBTYPE_EXTRAVALUE_EXCLUDE_FROM_LAST_IME and if subtype has this extra value,
It will be excluded from a last input method which will be called from switchToLastInputMethod
Change-Id: I03ae10e07f978dcc3a83dd77b10613048dce7f22
Diffstat (limited to 'services/java/com/android/server/InputMethodManagerService.java')
| -rw-r--r-- | services/java/com/android/server/InputMethodManagerService.java | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java index b5cc5aa6f53c..21c1e8146218 100644 --- a/services/java/com/android/server/InputMethodManagerService.java +++ b/services/java/com/android/server/InputMethodManagerService.java @@ -121,6 +121,10 @@ public class InputMethodManagerService extends IInputMethodManager.Stub private static final String SUBTYPE_MODE_KEYBOARD = "keyboard"; private static final String SUBTYPE_MODE_VOICE = "voice"; + // TODO: Will formalize this value as API + private static final String SUBTYPE_EXTRAVALUE_EXCLUDE_FROM_LAST_IME = + "excludeFromLastInputMethod"; + final Context mContext; final Resources mRes; final Handler mHandler; @@ -1901,12 +1905,26 @@ public class InputMethodManagerService extends IInputMethodManager.Stub } } + private boolean canAddToLastInputMethod(InputMethodSubtype subtype) { + if (subtype == null) return true; + String[] extraValues = subtype.getExtraValue().split(","); + final int N = extraValues.length; + for (int i = 0; i < N; ++i) { + if (SUBTYPE_EXTRAVALUE_EXCLUDE_FROM_LAST_IME.equals(extraValues[i])) { + return false; + } + } + return true; + } + private void saveCurrentInputMethodAndSubtypeToHistory() { String subtypeId = NOT_A_SUBTYPE_ID_STR; if (mCurrentSubtype != null) { subtypeId = String.valueOf(mCurrentSubtype.hashCode()); } - mSettings.addSubtypeToHistory(mCurMethodId, subtypeId); + if (canAddToLastInputMethod(mCurrentSubtype)) { + mSettings.addSubtypeToHistory(mCurMethodId, subtypeId); + } } private void setSelectedInputMethodAndSubtypeLocked(InputMethodInfo imi, int subtypeId, |
