Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24cd97ab authored by Robert Carr's avatar Robert Carr Committed by android-build-merger
Browse files

Merge "When restacking IM windows preserve relative order." into nyc-dev

am: db973df8

* commit 'db973df8':
  When restacking IM windows preserve relative order.

Change-Id: I9e6a52ea69f908fbebd8a39208d071ff70b97db0
parents 287dfb66 db973df8
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ public class WindowLayersController {
    private int mHighestApplicationLayer = 0;
    private ArrayDeque<WindowState> mPinnedWindows = new ArrayDeque<>();
    private ArrayDeque<WindowState> mDockedWindows = new ArrayDeque<>();
    private ArrayDeque<WindowState> mInputMethodWindows = new ArrayDeque<>();
    private WindowState mDockDivider = null;
    private ArrayDeque<WindowState> mReplacingWindows = new ArrayDeque<>();

@@ -166,6 +167,7 @@ public class WindowLayersController {
    private void clear() {
        mHighestApplicationLayer = 0;
        mPinnedWindows.clear();
        mInputMethodWindows.clear();
        mDockedWindows.clear();
        mReplacingWindows.clear();
        mDockDivider = null;
@@ -179,6 +181,10 @@ public class WindowLayersController {
        if (w.mWillReplaceWindow) {
            mReplacingWindows.add(w);
        }
        if (w.mIsImWindow) {
            mInputMethodWindows.add(w);
            return;
        }
        final TaskStack stack = w.getStack();
        if (stack == null) {
            return;
@@ -200,12 +206,9 @@ public class WindowLayersController {

        layer = assignAndIncreaseLayerIfNeeded(mDockDivider, layer);

        if (mDockDivider != null && mDockDivider.isVisibleLw()
                && mService.mInputMethodWindow != null) {
            layer = assignAndIncreaseLayerIfNeeded(mService.mInputMethodWindow, layer);
            for (int i = mService.mInputMethodDialogs.size() - 1; i >= 0; i--) {
                final WindowState dialog = mService.mInputMethodDialogs.get(i);
                layer = assignAndIncreaseLayerIfNeeded(dialog, layer);
        if (mDockDivider != null && mDockDivider.isVisibleLw()) {
            while (!mInputMethodWindows.isEmpty()) {
                layer = assignAndIncreaseLayerIfNeeded(mInputMethodWindows.remove(), layer);
            }
        }