diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowStateAnimator.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index 4cdfc41ff0ee..b20149b2ebf6 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -1245,6 +1245,10 @@ class WindowStateAnimator { mDtDx = 0; mDsDy = 0; mDtDy = mWin.mGlobalScale; + if (appTransformation == null) { + mHasClipRect = false; + mClipRect.setEmpty(); + } } } @@ -1336,7 +1340,10 @@ class WindowStateAnimator { clipRect.bottom += attrs.surfaceInsets.bottom; // If we have an animated clip rect, intersect it with the clip rect. - if (mHasClipRect) { + // However, the clip rect animation effect should be applied on app windows that inset + // decor only. If applying on non-inset decor one, the top region of this window will + // be clipped on the end of animation, e.g. dialog activities. + if (mHasClipRect && (w.mAttrs.flags & LayoutParams.FLAG_LAYOUT_INSET_DECOR) != 0) { // NOTE: We are adding a temporary workaround due to the status bar // not always reporting the correct system decor rect. In such // cases, we take into account the specified content insets as well. |