Loading services/core/java/com/android/server/wm/WindowState.java +27 −5 Original line number Diff line number Diff line Loading @@ -4717,16 +4717,38 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP outPoint.offset(-mAttrs.surfaceInsets.left, -mAttrs.surfaceInsets.top); } boolean needsRelativeLayeringToIme() { // We only use the relative layering mode in split screen, as part of elevating the IME // and windows above it's target above the docked divider. if (!inSplitScreenWindowingMode()) { return false; } if (isChildWindow()) { // If we are a child of the input method target we need this promotion. if (getParentWindow().isInputMethodTarget()) { return true; } } else if (mAppToken != null) { // Likewise if we share a token with the Input method target and are ordered // above it but not necessarily a child (e.g. a Dialog) then we also need // this promotion. final WindowState imeTarget = mService.mInputMethodTarget; boolean inTokenWithAndAboveImeTarget = imeTarget != null && imeTarget != this && imeTarget.mToken == mToken && imeTarget.compareTo(this) <= 0; return inTokenWithAndAboveImeTarget; } return false; } @Override void assignLayer(Transaction t, int layer) { // See comment in assignRelativeLayerForImeTargetChild if (!isChildWindow() || (!getParentWindow().isInputMethodTarget()) || !inSplitScreenWindowingMode()) { super.assignLayer(t, layer); if (needsRelativeLayeringToIme()) { getDisplayContent().assignRelativeLayerForImeTargetChild(t, this); return; } getDisplayContent().assignRelativeLayerForImeTargetChild(t, this); super.assignLayer(t, layer); } @Override Loading Loading
services/core/java/com/android/server/wm/WindowState.java +27 −5 Original line number Diff line number Diff line Loading @@ -4717,16 +4717,38 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP outPoint.offset(-mAttrs.surfaceInsets.left, -mAttrs.surfaceInsets.top); } boolean needsRelativeLayeringToIme() { // We only use the relative layering mode in split screen, as part of elevating the IME // and windows above it's target above the docked divider. if (!inSplitScreenWindowingMode()) { return false; } if (isChildWindow()) { // If we are a child of the input method target we need this promotion. if (getParentWindow().isInputMethodTarget()) { return true; } } else if (mAppToken != null) { // Likewise if we share a token with the Input method target and are ordered // above it but not necessarily a child (e.g. a Dialog) then we also need // this promotion. final WindowState imeTarget = mService.mInputMethodTarget; boolean inTokenWithAndAboveImeTarget = imeTarget != null && imeTarget != this && imeTarget.mToken == mToken && imeTarget.compareTo(this) <= 0; return inTokenWithAndAboveImeTarget; } return false; } @Override void assignLayer(Transaction t, int layer) { // See comment in assignRelativeLayerForImeTargetChild if (!isChildWindow() || (!getParentWindow().isInputMethodTarget()) || !inSplitScreenWindowingMode()) { super.assignLayer(t, layer); if (needsRelativeLayeringToIme()) { getDisplayContent().assignRelativeLayerForImeTargetChild(t, this); return; } getDisplayContent().assignRelativeLayerForImeTargetChild(t, this); super.assignLayer(t, layer); } @Override Loading