diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/Task.java | 8 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowState.java | 8 |
2 files changed, 13 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index b4633184c969..9a140daad417 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -2744,7 +2744,13 @@ class Task extends WindowContainer<WindowContainer> { getDimBounds(mTmpDimBoundsRect); // Bounds need to be relative, as the dim layer is a child. - mTmpDimBoundsRect.offsetTo(0, 0); + if (inFreeformWindowingMode()) { + getBounds(mTmpRect); + mTmpDimBoundsRect.offsetTo(mTmpDimBoundsRect.left - mTmpRect.left, + mTmpDimBoundsRect.top - mTmpRect.top); + } else { + mTmpDimBoundsRect.offsetTo(0, 0); + } if (mDimmer.updateDims(getPendingTransaction(), mTmpDimBoundsRect)) { scheduleAnimation(); } diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index e257c784ca6c..4e768da18041 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -984,8 +984,11 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP final int layoutXDiff; final int layoutYDiff; final WindowState imeWin = mWmService.mRoot.getCurrentInputMethodWindow(); + final boolean isInputMethodAdjustTarget = windowsAreFloating + ? dc.mInputMethodTarget != null && task == dc.mInputMethodTarget.getTask() + : isInputMethodTarget(); final boolean isImeTarget = - imeWin != null && imeWin.isVisibleNow() && isInputMethodTarget(); + imeWin != null && imeWin.isVisibleNow() && isInputMethodAdjustTarget; if (isFullscreenAndFillsDisplay || layoutInParentFrame()) { // We use the parent frame as the containing frame for fullscreen and child windows mWindowFrames.mContainingFrame.set(mWindowFrames.mParentFrame); @@ -1016,7 +1019,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP final int distanceToTop = Math.max(mWindowFrames.mContainingFrame.top - mWindowFrames.mContentFrame.top, 0); int offs = Math.min(bottomOverlap, distanceToTop); - mWindowFrames.mContainingFrame.top -= offs; + mWindowFrames.mContainingFrame.offset(0, -offs); + mInsetFrame.offset(0, -offs); } } else if (!inPinnedWindowingMode() && mWindowFrames.mContainingFrame.bottom > mWindowFrames.mParentFrame.bottom) { |