am 3a92c5fd: Merge "Fix the return value of switch to last ime." into honeycomb

* commit '3a92c5fd3262236e0c6969591da7f6cb50dbddfc':
  Fix the return value of switch to last ime.
This commit is contained in:
satok
2011-01-25 08:02:42 -08:00
committed by Android Git Automerger

View File

@@ -1356,14 +1356,27 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
public boolean switchToLastInputMethod(IBinder token) {
synchronized (mMethodMap) {
Pair<String, String> lastIme = mSettings.getLastInputMethodAndSubtypeLocked();
if (lastIme != null) {
InputMethodInfo imi = mMethodMap.get(lastIme.first);
if (imi != null) {
setInputMethodWithSubtypeId(token, lastIme.first, getSubtypeIdFromHashCode(
imi, Integer.valueOf(lastIme.second)));
return true;
final Pair<String, String> lastIme = mSettings.getLastInputMethodAndSubtypeLocked();
if (lastIme == null) return false;
final InputMethodInfo lastImi = mMethodMap.get(lastIme.first);
if (lastImi == null) return false;
final boolean imiIdIsSame = lastImi.getId().equals(mCurMethodId);
final int lastSubtypeHash = Integer.valueOf(lastIme.second);
// If the last IME is the same as the current IME and the last subtype is not defined,
// there is no need to switch to the last IME.
if (imiIdIsSame && lastSubtypeHash == NOT_A_SUBTYPE_ID) return false;
int currentSubtypeHash = mCurrentSubtype == null ? NOT_A_SUBTYPE_ID
: mCurrentSubtype.hashCode();
if (!imiIdIsSame || lastSubtypeHash != currentSubtypeHash) {
if (DEBUG) {
Slog.d(TAG, "Switch to: " + lastImi.getId() + ", " + lastIme.second + ", from: "
+ mCurMethodId + ", " + currentSubtypeHash);
}
setInputMethodWithSubtypeId(token, lastIme.first, getSubtypeIdFromHashCode(
lastImi, lastSubtypeHash));
return true;
}
return false;
}