diff options
author | Jason Monk <jmonk@google.com> | 2014-05-07 14:24:51 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-05-07 14:24:51 +0000 |
commit | 96c99627c60861bfb764a35eb4c3e938680fa998 (patch) | |
tree | 596b3785bb17a25218b5fda111bd69f669d46fcb | |
parent | 49d1728855be91899873fbc144143ca8c2c07892 (diff) | |
parent | 10a38c06df42f0231a71a78ec341609648035b9d (diff) | |
download | frameworks_base-96c99627c60861bfb764a35eb4c3e938680fa998.zip frameworks_base-96c99627c60861bfb764a35eb4c3e938680fa998.tar.gz frameworks_base-96c99627c60861bfb764a35eb4c3e938680fa998.tar.bz2 |
am f6118a19: Merge "Only show IME in navigation bar when it should"
* commit 'f6118a1968127912caad4aed6f2dfbd5177753ee':
Only show IME in navigation bar when it should
8 files changed, 35 insertions, 18 deletions
diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl index d1d1a52..75feb5d 100644 --- a/core/java/com/android/internal/statusbar/IStatusBar.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl @@ -33,7 +33,8 @@ oneway interface IStatusBar void animateCollapsePanels(); void setSystemUiVisibility(int vis, int mask); void topAppWindowChanged(boolean menuVisible); - void setImeWindowStatus(in IBinder token, int vis, int backDisposition); + void setImeWindowStatus(in IBinder token, int vis, int backDisposition, + boolean showImeSwitcher); void setHardKeyboardStatus(boolean available, boolean enabled); void toggleRecentApps(); void preloadRecentApps(); diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl index caa6b98..cf334c3 100644 --- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl @@ -31,7 +31,8 @@ interface IStatusBarService void setIconVisibility(String slot, boolean visible); void removeIcon(String slot); void topAppWindowChanged(boolean menuVisible); - void setImeWindowStatus(in IBinder token, int vis, int backDisposition); + void setImeWindowStatus(in IBinder token, int vis, int backDisposition, + boolean showImeSwitcher); void expandSettingsPanel(); void setCurrentUser(int newUserId); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java index 2c7464a..d224975 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java @@ -302,7 +302,7 @@ public abstract class BaseStatusBar extends SystemUI implements ArrayList<StatusBarNotification> notifications = new ArrayList<StatusBarNotification>(); mCommandQueue = new CommandQueue(this, iconList); - int[] switches = new int[7]; + int[] switches = new int[8]; ArrayList<IBinder> binders = new ArrayList<IBinder>(); try { mBarService.registerStatusBar(mCommandQueue, iconList, notificationKeys, notifications, @@ -317,7 +317,7 @@ public abstract class BaseStatusBar extends SystemUI implements setSystemUiVisibility(switches[1], 0xffffffff); topAppWindowChanged(switches[2] != 0); // StatusBarManagerService has a back up of IME token and it's restored here. - setImeWindowStatus(binders.get(0), switches[3], switches[4]); + setImeWindowStatus(binders.get(0), switches[3], switches[4], switches[7] != 0); setHardKeyboardStatus(switches[5] != 0, switches[6] != 0); // Set up the initial icon state diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java index bbbe8fa..5362af5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java @@ -65,6 +65,8 @@ public class CommandQueue extends IStatusBar.Stub { public static final int FLAG_EXCLUDE_INPUT_METHODS_PANEL = 1 << 3; public static final int FLAG_EXCLUDE_COMPAT_MODE_PANEL = 1 << 4; + private static final String SHOW_IME_SWITCHER_KEY = "showImeSwitcherKey"; + private StatusBarIconList mList; private Callbacks mCallbacks; private Handler mHandler = new H(); @@ -91,7 +93,8 @@ public class CommandQueue extends IStatusBar.Stub { public void animateExpandSettingsPanel(); public void setSystemUiVisibility(int vis, int mask); public void topAppWindowChanged(boolean visible); - public void setImeWindowStatus(IBinder token, int vis, int backDisposition); + public void setImeWindowStatus(IBinder token, int vis, int backDisposition, + boolean showImeSwitcher); public void setHardKeyboardStatus(boolean available, boolean enabled); public void toggleRecentApps(); public void preloadRecentApps(); @@ -190,11 +193,13 @@ public class CommandQueue extends IStatusBar.Stub { } } - public void setImeWindowStatus(IBinder token, int vis, int backDisposition) { + public void setImeWindowStatus(IBinder token, int vis, int backDisposition, + boolean showImeSwitcher) { synchronized (mList) { mHandler.removeMessages(MSG_SHOW_IME_BUTTON); - mHandler.obtainMessage(MSG_SHOW_IME_BUTTON, vis, backDisposition, token) - .sendToTarget(); + Message m = mHandler.obtainMessage(MSG_SHOW_IME_BUTTON, vis, backDisposition, token); + m.getData().putBoolean(SHOW_IME_SWITCHER_KEY, showImeSwitcher); + m.sendToTarget(); } } @@ -298,7 +303,8 @@ public class CommandQueue extends IStatusBar.Stub { mCallbacks.topAppWindowChanged(msg.arg1 != 0); break; case MSG_SHOW_IME_BUTTON: - mCallbacks.setImeWindowStatus((IBinder) msg.obj, msg.arg1, msg.arg2); + mCallbacks.setImeWindowStatus((IBinder) msg.obj, msg.arg1, msg.arg2, + msg.getData().getBoolean(SHOW_IME_SWITCHER_KEY, false)); break; case MSG_SET_HARD_KEYBOARD_STATUS: mCallbacks.setHardKeyboardStatus(msg.arg1 != 0, msg.arg2 != 0); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index f945c79..3856ba1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -2235,7 +2235,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } @Override - public void setImeWindowStatus(IBinder token, int vis, int backDisposition) { + public void setImeWindowStatus(IBinder token, int vis, int backDisposition, + boolean showImeSwitcher) { boolean imeShown = (vis & InputMethodService.IME_VISIBLE) != 0; int flags = mNavigationIconHints; if ((backDisposition == InputMethodService.BACK_DISPOSITION_WILL_DISMISS) || imeShown) { @@ -2243,7 +2244,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } else { flags &= ~NAVIGATION_HINT_BACK_ALT; } - if (imeShown) { + if (showImeSwitcher) { flags |= NAVIGATION_HINT_IME_SHOWN; } else { flags &= ~NAVIGATION_HINT_IME_SHOWN; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java index d615542..4b3d3b0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java @@ -78,7 +78,8 @@ public class TvStatusBar extends BaseStatusBar { } @Override - public void setImeWindowStatus(IBinder token, int vis, int backDisposition) { + public void setImeWindowStatus(IBinder token, int vis, int backDisposition, + boolean showImeSwitcher) { } @Override diff --git a/services/core/java/com/android/server/InputMethodManagerService.java b/services/core/java/com/android/server/InputMethodManagerService.java index 7ed1cc7..10315a7 100644 --- a/services/core/java/com/android/server/InputMethodManagerService.java +++ b/services/core/java/com/android/server/InputMethodManagerService.java @@ -1532,14 +1532,17 @@ public class InputMethodManagerService extends IInputMethodManager.Stub } mImeWindowVis = vis; mBackDisposition = backDisposition; - if (mStatusBar != null) { - mStatusBar.setImeWindowStatus(token, vis, backDisposition); - } final boolean iconVisibility = ((vis & (InputMethodService.IME_ACTIVE)) != 0) && (mWindowManagerService.isHardKeyboardAvailable() || (vis & (InputMethodService.IME_VISIBLE)) != 0); + final boolean needsToShowImeSwitcher = iconVisibility + && needsToShowImeSwitchOngoingNotification(); + if (mStatusBar != null) { + mStatusBar.setImeWindowStatus(token, vis, backDisposition, + needsToShowImeSwitcher); + } final InputMethodInfo imi = mMethodMap.get(mCurMethodId); - if (imi != null && iconVisibility && needsToShowImeSwitchOngoingNotification()) { + if (imi != null && needsToShowImeSwitcher) { // Used to load label final CharSequence title = mRes.getText( com.android.internal.R.string.select_input_method); diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java index 022bdae..738ad32 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java @@ -74,6 +74,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub private boolean mMenuVisible = false; private int mImeWindowVis = 0; private int mImeBackDisposition; + private boolean mShowImeSwitcher; private IBinder mImeToken = null; private int mCurrentUserId; @@ -346,7 +347,8 @@ public class StatusBarManagerService extends IStatusBarService.Stub } @Override - public void setImeWindowStatus(final IBinder token, final int vis, final int backDisposition) { + public void setImeWindowStatus(final IBinder token, final int vis, final int backDisposition, + final boolean showImeSwitcher) { enforceStatusBar(); if (SPEW) { @@ -360,11 +362,12 @@ public class StatusBarManagerService extends IStatusBarService.Stub mImeWindowVis = vis; mImeBackDisposition = backDisposition; mImeToken = token; + mShowImeSwitcher = showImeSwitcher; mHandler.post(new Runnable() { public void run() { if (mBar != null) { try { - mBar.setImeWindowStatus(token, vis, backDisposition); + mBar.setImeWindowStatus(token, vis, backDisposition, showImeSwitcher); } catch (RemoteException ex) { } } @@ -512,6 +515,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub switches[2] = mMenuVisible ? 1 : 0; switches[3] = mImeWindowVis; switches[4] = mImeBackDisposition; + switches[7] = mShowImeSwitcher ? 1 : 0; binders.add(mImeToken); } switches[5] = mWindowManager.isHardKeyboardAvailable() ? 1 : 0; |