diff options
3 files changed, 10 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 c4600e02dfb9..7c561800ed03 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -326,6 +326,10 @@ class Task implements DimLayer.DimLayerUser { return mStack != null && mStack.mStackId == FREEFORM_WORKSPACE_STACK_ID; } + boolean inDockedWorkspace() { + return mStack != null && mStack.mStackId == DOCKED_STACK_ID; + } + WindowState getTopAppMainWindow() { final int tokensCount = mAppTokens.size(); return tokensCount > 0 ? mAppTokens.get(tokensCount - 1).findMainWindow() : null; diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index e72d35c62e5e..7ea64f153061 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1326,6 +1326,10 @@ final class WindowState implements WindowManagerPolicy.WindowState { } } + boolean inDockedWorkspace() { + return mAppToken != null && mAppToken.mTask != null && mAppToken.mTask.inDockedWorkspace(); + } + private class DeathRecipient implements IBinder.DeathRecipient { @Override public void binderDied() { diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index 191360426e94..276d7cd0894e 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -1401,9 +1401,8 @@ class WindowStateAnimator { clipRect.offset(attrs.surfaceInsets.left, attrs.surfaceInsets.top); // We don't want to clip to stack bounds windows that are currently doing entrance - // animation. This is necessary for docking operation, otherwise the window will be - // suddenly cut off. - if (!mAnimator.mAnimating) { + // animation for docked window, otherwise the animating window will be suddenly cut off. + if (!(mAnimator.mAnimating && w.inDockedWorkspace())) { adjustCropToStackBounds(w, clipRect); } |