summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/InputMethodManagerService.java
diff options
context:
space:
mode:
authorJohn Spurlock <jspurlock@google.com>2012-11-14 08:51:07 -0500
committerJohn Spurlock <jspurlock@google.com>2012-11-20 14:06:56 -0500
commitbc7b6fc2a4b701596a2c8eecc4aeef522abeeafa (patch)
treecca5bed177912d9f8188ea0eb4201132372c8002 /services/java/com/android/server/InputMethodManagerService.java
parenta711d1ee76cf2e731d28a011c81d7f772cefa6c2 (diff)
downloadframeworks_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.java18
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.