diff options
author | John Spurlock <jspurlock@google.com> | 2012-11-14 08:51:07 -0500 |
---|---|---|
committer | John Spurlock <jspurlock@google.com> | 2012-11-20 14:06:56 -0500 |
commit | bc7b6fc2a4b701596a2c8eecc4aeef522abeeafa (patch) | |
tree | cca5bed177912d9f8188ea0eb4201132372c8002 /services/java/com/android/server/InputMethodManagerService.java | |
parent | a711d1ee76cf2e731d28a011c81d7f772cefa6c2 (diff) | |
download | frameworks_base-bc7b6fc2a4b701596a2c8eecc4aeef522abeeafa.zip frameworks_base-bc7b6fc2a4b701596a2c8eecc4aeef522abeeafa.tar.gz frameworks_base-bc7b6fc2a4b701596a2c8eecc4aeef522abeeafa.tar.bz2 |
Fix IME down caret in keyguard nav bar bug.
The input method manager service now keeps track of whether or not
the ime was shown on the keyguard. This prevents activities behind
the keyguard from incorrectly showing the down-caret in the keyguard.
Bug:7498792
Change-Id: I0de01ec29cb544e902305b0f9d9fb94a73835e7b
Diffstat (limited to 'services/java/com/android/server/InputMethodManagerService.java')
-rw-r--r-- | services/java/com/android/server/InputMethodManagerService.java | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java index da6f1fa..c33fc71 100644 --- a/services/java/com/android/server/InputMethodManagerService.java +++ b/services/java/com/android/server/InputMethodManagerService.java @@ -386,6 +386,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub private Locale mLastSystemLocale; private final MyPackageMonitor mMyPackageMonitor = new MyPackageMonitor(); private final IPackageManager mIPackageManager; + private boolean mInputBoundToKeyguard; class SettingsObserver extends ContentObserver { SettingsObserver(Handler handler) { @@ -877,10 +878,12 @@ public class InputMethodManagerService extends IInputMethodManager.Stub final boolean hardKeyShown = haveHardKeyboard && conf.hardKeyboardHidden != Configuration.HARDKEYBOARDHIDDEN_YES; - final boolean isScreenLocked = mKeyguardManager != null - && mKeyguardManager.isKeyguardLocked() - && mKeyguardManager.isKeyguardSecure(); - mImeWindowVis = (!isScreenLocked && (mInputShown || hardKeyShown)) ? + final boolean isScreenLocked = + mKeyguardManager != null && mKeyguardManager.isKeyguardLocked(); + final boolean isScreenSecurelyLocked = + isScreenLocked && mKeyguardManager.isKeyguardSecure(); + final boolean inputShown = mInputShown && (!isScreenLocked || mInputBoundToKeyguard); + mImeWindowVis = (!isScreenSecurelyLocked && (inputShown || hardKeyShown)) ? (InputMethodService.IME_ACTIVE | InputMethodService.IME_VISIBLE) : 0; updateImeWindowStatusLocked(); } @@ -1124,6 +1127,13 @@ public class InputMethodManagerService extends IInputMethodManager.Stub return mNoBinding; } + if (mCurClient == null) { + mInputBoundToKeyguard = mKeyguardManager != null && mKeyguardManager.isKeyguardLocked(); + if (DEBUG) { + Slog.v(TAG, "New bind. keyguard = " + mInputBoundToKeyguard); + } + } + if (mCurClient != cs) { // If the client is changing, we need to switch over to the new // one. |