Don't push IME above all app windows and dock divider.
The IME should only be pushed above the application that requested it. There might be other windows that go above the IME, e.g. spinner dialog. We used to need the IME to go above all app windows, because the dock divider goes above all app windows and we want IME above the dock divider. This is not necessary anymore, because the dock divider is now aware of the IME and changes it's size to available space. The transition is also graceful enough, that it looks correct even when the IME goes away. Bug: 26325071 Change-Id: I8c05f2d200c5bb92c5fdb0d252e277fbe43a60a5
This commit is contained in:
@@ -58,7 +58,6 @@ public class WindowLayersController {
|
||||
private WindowState mPinnedWindow = null;
|
||||
private WindowState mDockedWindow = null;
|
||||
private WindowState mDockDivider = null;
|
||||
private WindowState mImeWindow = null;
|
||||
private WindowState mReplacingWindow = null;
|
||||
|
||||
final void assignLayersLocked(WindowList windows) {
|
||||
@@ -170,16 +169,13 @@ public class WindowLayersController {
|
||||
|
||||
private void clear() {
|
||||
mHighestApplicationLayer = 0;
|
||||
mImeWindow = null;
|
||||
mPinnedWindow = null;
|
||||
mDockedWindow = null;
|
||||
mDockDivider = null;
|
||||
}
|
||||
|
||||
private void collectSpecialWindows(WindowState w) {
|
||||
if (w.mIsImWindow) {
|
||||
mImeWindow = w;
|
||||
} else if (w.mAttrs.type == TYPE_DOCK_DIVIDER) {
|
||||
if (w.mAttrs.type == TYPE_DOCK_DIVIDER) {
|
||||
mDockDivider = w;
|
||||
} else {
|
||||
final TaskStack stack = w.getStack();
|
||||
@@ -210,12 +206,6 @@ public class WindowLayersController {
|
||||
// immediately receive the same treatment, e.g. to be above the dock divider.
|
||||
layer = assignAndIncreaseLayerIfNeeded(mReplacingWindow, layer);
|
||||
layer = assignAndIncreaseLayerIfNeeded(mPinnedWindow, layer);
|
||||
final WindowState inputMethodTarget = mService.mInputMethodTarget;
|
||||
// There might be no applications windows yet, so we need to make sure we uplift the input
|
||||
// method above the target.
|
||||
layer = Math.max(layer,
|
||||
inputMethodTarget != null ? inputMethodTarget.mWinAnimator.mAnimLayer + 1 : 0);
|
||||
layer = assignAndIncreaseLayerIfNeeded(mImeWindow, layer);
|
||||
}
|
||||
|
||||
private int assignAndIncreaseLayerIfNeeded(WindowState win, int layer) {
|
||||
|
||||
Reference in New Issue
Block a user