Merge "When restacking IM windows preserve relative order." into nyc-dev
am: db973df
* commit 'db973df830c32af8e2aeff256053299409f65dfd':
When restacking IM windows preserve relative order.
Change-Id: I9e6a52ea69f908fbebd8a39208d071ff70b97db0
This commit is contained in:
@@ -59,6 +59,7 @@ public class WindowLayersController {
|
|||||||
private int mHighestApplicationLayer = 0;
|
private int mHighestApplicationLayer = 0;
|
||||||
private ArrayDeque<WindowState> mPinnedWindows = new ArrayDeque<>();
|
private ArrayDeque<WindowState> mPinnedWindows = new ArrayDeque<>();
|
||||||
private ArrayDeque<WindowState> mDockedWindows = new ArrayDeque<>();
|
private ArrayDeque<WindowState> mDockedWindows = new ArrayDeque<>();
|
||||||
|
private ArrayDeque<WindowState> mInputMethodWindows = new ArrayDeque<>();
|
||||||
private WindowState mDockDivider = null;
|
private WindowState mDockDivider = null;
|
||||||
private ArrayDeque<WindowState> mReplacingWindows = new ArrayDeque<>();
|
private ArrayDeque<WindowState> mReplacingWindows = new ArrayDeque<>();
|
||||||
|
|
||||||
@@ -166,6 +167,7 @@ public class WindowLayersController {
|
|||||||
private void clear() {
|
private void clear() {
|
||||||
mHighestApplicationLayer = 0;
|
mHighestApplicationLayer = 0;
|
||||||
mPinnedWindows.clear();
|
mPinnedWindows.clear();
|
||||||
|
mInputMethodWindows.clear();
|
||||||
mDockedWindows.clear();
|
mDockedWindows.clear();
|
||||||
mReplacingWindows.clear();
|
mReplacingWindows.clear();
|
||||||
mDockDivider = null;
|
mDockDivider = null;
|
||||||
@@ -179,6 +181,10 @@ public class WindowLayersController {
|
|||||||
if (w.mWillReplaceWindow) {
|
if (w.mWillReplaceWindow) {
|
||||||
mReplacingWindows.add(w);
|
mReplacingWindows.add(w);
|
||||||
}
|
}
|
||||||
|
if (w.mIsImWindow) {
|
||||||
|
mInputMethodWindows.add(w);
|
||||||
|
return;
|
||||||
|
}
|
||||||
final TaskStack stack = w.getStack();
|
final TaskStack stack = w.getStack();
|
||||||
if (stack == null) {
|
if (stack == null) {
|
||||||
return;
|
return;
|
||||||
@@ -200,12 +206,9 @@ public class WindowLayersController {
|
|||||||
|
|
||||||
layer = assignAndIncreaseLayerIfNeeded(mDockDivider, layer);
|
layer = assignAndIncreaseLayerIfNeeded(mDockDivider, layer);
|
||||||
|
|
||||||
if (mDockDivider != null && mDockDivider.isVisibleLw()
|
if (mDockDivider != null && mDockDivider.isVisibleLw()) {
|
||||||
&& mService.mInputMethodWindow != null) {
|
while (!mInputMethodWindows.isEmpty()) {
|
||||||
layer = assignAndIncreaseLayerIfNeeded(mService.mInputMethodWindow, layer);
|
layer = assignAndIncreaseLayerIfNeeded(mInputMethodWindows.remove(), layer);
|
||||||
for (int i = mService.mInputMethodDialogs.size() - 1; i >= 0; i--) {
|
|
||||||
final WindowState dialog = mService.mInputMethodDialogs.get(i);
|
|
||||||
layer = assignAndIncreaseLayerIfNeeded(dialog, layer);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user