aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2011-12-07 21:27:59 +0900
committerTadashi G. Takaoka <takaoka@google.com>2011-12-07 22:39:13 +0900
commit6b7100fecaaaf0e8e42c4d2ccebac165e89e79bf (patch)
treecbff734bf2721501bd7c4b531a69b08f241ce0e6 /java/src
parent68d600a5f66d5ba6a33c248a3b8825d65add9b9f (diff)
downloadlatinime-6b7100fecaaaf0e8e42c4d2ccebac165e89e79bf.tar.gz
latinime-6b7100fecaaaf0e8e42c4d2ccebac165e89e79bf.tar.xz
latinime-6b7100fecaaaf0e8e42c4d2ccebac165e89e79bf.zip
Don't execute pending onStartInputView if EditorInfos are equivalent
Bug: 5722732 Bug: 5722867 Change-Id: I8347c258b286c3329f318d50adf205e78e49c722
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardId.java9
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java30
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java4
3 files changed, 25 insertions, 18 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardId.java b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
index 840857778..ecc821a4b 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardId.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
@@ -16,6 +16,7 @@
package com.android.inputmethod.keyboard;
+import android.text.TextUtils;
import android.view.inputmethod.EditorInfo;
import com.android.inputmethod.compat.EditorInfoCompatUtils;
@@ -177,6 +178,14 @@ public class KeyboardId {
);
}
+ public static boolean equivalentEditorInfoForKeyboard(EditorInfo a, EditorInfo b) {
+ if (a == null && b == null) return true;
+ if (a == null || b == null) return false;
+ return a.inputType == b.inputType
+ && a.imeOptions == b.imeOptions
+ && TextUtils.equals(a.privateImeOptions, b.privateImeOptions);
+ }
+
public static String modeName(int mode) {
switch (mode) {
case MODE_TEXT: return "text";
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index e8d11b0f4..50d963c07 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -125,23 +125,9 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
mIsValid = true;
}
- public void restore(boolean forceRestore) {
- if (!mIsValid) {
- if (forceRestore) {
- setAlphabetKeyboard();
- }
- return;
- }
- mIsValid = false;
-
- if (mIsAlphabetMode) {
+ public void restore() {
+ if (!mIsValid || mIsAlphabetMode) {
setAlphabetKeyboard();
- if (mIsShiftLocked) {
- setShiftLocked(true);
- }
- if (mIsShifted) {
- setShifted(MANUAL_SHIFT);
- }
} else {
if (mIsShifted) {
setSymbolsShiftedKeyboard();
@@ -149,6 +135,16 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
setSymbolsKeyboard();
}
}
+
+ if (!mIsValid) return;
+ mIsValid = false;
+
+ if (mIsAlphabetMode) {
+ setShiftLocked(mIsShiftLocked);
+ if (!mIsShiftLocked) {
+ setShifted(mIsShifted ? MANUAL_SHIFT : UNSHIFT);
+ }
+ }
}
}
@@ -204,7 +200,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
mSymbolsShiftedKeyboardId = getKeyboardId(editorInfo, true, true, settingsValues);
mState.onLoadKeyboard();
mLayoutSwitchBackSymbols = mResources.getString(R.string.layout_switch_back_symbols);
- mSavedKeyboardState.restore(mCurrentId == null);
+ mSavedKeyboardState.restore();
} catch (RuntimeException e) {
Log.w(TAG, "loading keyboard failed: " + mMainKeyboardId, e);
LatinImeLogger.logOnException(mMainKeyboardId.toString(), e);
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 5f446a5c4..c2656b891 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -62,6 +62,7 @@ import com.android.inputmethod.deprecated.VoiceProxy;
import com.android.inputmethod.keyboard.Key;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.keyboard.KeyboardActionListener;
+import com.android.inputmethod.keyboard.KeyboardId;
import com.android.inputmethod.keyboard.KeyboardSwitcher;
import com.android.inputmethod.keyboard.KeyboardView;
import com.android.inputmethod.keyboard.LatinKeyboard;
@@ -442,7 +443,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
public void onStartInputView(EditorInfo editorInfo, boolean restarting) {
- if (hasMessages(MSG_PENDING_IMS_CALLBACK) && editorInfo == mAppliedEditorInfo) {
+ if (hasMessages(MSG_PENDING_IMS_CALLBACK)
+ && KeyboardId.equivalentEditorInfoForKeyboard(editorInfo, mAppliedEditorInfo)) {
// Typically this is the second onStartInputView after orientation changed.
resetPendingImsCallback();
} else {