Merge "Add window to child window list with correct order"
This commit is contained in:
@@ -386,28 +386,26 @@ final class WindowState implements WindowManagerPolicy.WindowState {
|
|||||||
mAttachedWindow = attachedWindow;
|
mAttachedWindow = attachedWindow;
|
||||||
if (WindowManagerService.DEBUG_ADD_REMOVE) Slog.v(TAG, "Adding " + this + " to " + mAttachedWindow);
|
if (WindowManagerService.DEBUG_ADD_REMOVE) Slog.v(TAG, "Adding " + this + " to " + mAttachedWindow);
|
||||||
|
|
||||||
int children_size = mAttachedWindow.mChildWindows.size();
|
final WindowList childWindows = mAttachedWindow.mChildWindows;
|
||||||
if (children_size == 0) {
|
final int numChildWindows = childWindows.size();
|
||||||
mAttachedWindow.mChildWindows.add(this);
|
if (numChildWindows == 0) {
|
||||||
|
childWindows.add(this);
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < children_size; i++) {
|
boolean added = false;
|
||||||
WindowState child = (WindowState)mAttachedWindow.mChildWindows.get(i);
|
for (int i = 0; i < numChildWindows; i++) {
|
||||||
if (this.mSubLayer < child.mSubLayer) {
|
final int childSubLayer = childWindows.get(i).mSubLayer;
|
||||||
mAttachedWindow.mChildWindows.add(i, this);
|
if (mSubLayer < childSubLayer
|
||||||
|
|| (mSubLayer == childSubLayer && childSubLayer < 0)) {
|
||||||
|
// We insert the child window into the list ordered by the sub-layer. For
|
||||||
|
// same sub-layers, the negative one should go below others; the positive
|
||||||
|
// one should go above others.
|
||||||
|
childWindows.add(i, this);
|
||||||
|
added = true;
|
||||||
break;
|
break;
|
||||||
} else if (this.mSubLayer > child.mSubLayer) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.mBaseLayer <= child.mBaseLayer) {
|
|
||||||
mAttachedWindow.mChildWindows.add(i, this);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (children_size == mAttachedWindow.mChildWindows.size()) {
|
if (!added) {
|
||||||
mAttachedWindow.mChildWindows.add(this);
|
childWindows.add(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user