diff options
| author | satok <satok@google.com> | 2011-11-18 08:38:19 +0900 |
|---|---|---|
| committer | satok <satok@google.com> | 2011-11-18 09:15:18 +0900 |
| commit | 3afd6c0d4d5c2c80cf0450941babaee32ec9c7ee (patch) | |
| tree | 2fea6bf9df284c89b5f7babcd925a467679d7fb2 /services/java/com/android/server/InputMethodManagerService.java | |
| parent | 060677f4686a93d92117d7d472e754423a368bdb (diff) | |
Hide/show ime switch icon properly
Bug: 5481999
Change-Id: I4b3dde7285a9ac49da8d5d1133fddd0807b03f4d
Diffstat (limited to 'services/java/com/android/server/InputMethodManagerService.java')
| -rw-r--r-- | services/java/com/android/server/InputMethodManagerService.java | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java index ddac35c5d533..f5c4ed46c411 100644 --- a/services/java/com/android/server/InputMethodManagerService.java +++ b/services/java/com/android/server/InputMethodManagerService.java @@ -382,6 +382,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { mScreenOn = true; + refreshImeWindowVisibilityLocked(); } else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { mScreenOn = false; setImeWindowVisibilityStatusHiddenLocked(); @@ -640,6 +641,21 @@ public class InputMethodManagerService extends IInputMethodManager.Stub updateImeWindowStatusLocked(); } + private void refreshImeWindowVisibilityLocked() { + final Configuration conf = mRes.getConfiguration(); + final boolean haveHardKeyboard = conf.keyboard + != Configuration.KEYBOARD_NOKEYS; + final boolean hardKeyShown = haveHardKeyboard + && conf.hardKeyboardHidden + != Configuration.HARDKEYBOARDHIDDEN_YES; + final boolean isScreenLocked = mKeyguardManager != null + && mKeyguardManager.isKeyguardLocked() + && mKeyguardManager.isKeyguardSecure(); + mImeWindowVis = (!isScreenLocked && (mInputShown || hardKeyShown)) ? + (InputMethodService.IME_ACTIVE | InputMethodService.IME_VISIBLE) : 0; + updateImeWindowStatusLocked(); + } + private void updateImeWindowStatusLocked() { setImeWindowStatus(mCurToken, mImeWindowVis, mBackDisposition); } @@ -1285,16 +1301,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub } if (mCurMethod != null) { try { - final Configuration conf = mRes.getConfiguration(); - final boolean haveHardKeyboard = conf.keyboard - != Configuration.KEYBOARD_NOKEYS; - final boolean hardKeyShown = haveHardKeyboard - && conf.hardKeyboardHidden - != Configuration.HARDKEYBOARDHIDDEN_YES; - mImeWindowVis = (mInputShown || hardKeyShown) ? ( - InputMethodService.IME_ACTIVE | InputMethodService.IME_VISIBLE) - : 0; - updateImeWindowStatusLocked(); + refreshImeWindowVisibilityLocked(); // If subtype is null, try to find the most applicable one from // getCurrentInputMethodSubtype. if (subtype == null) { |
