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

Commit db973df8 authored by Rob Carr's avatar Rob Carr Committed by Android (Google) Code Review
Browse files

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

parents 5a2554a8 b976877a
Loading
Loading
Loading
Loading
+9 −6
Original line number Original line Diff line number Diff line
@@ -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);
            }
            }
        }
        }