diff options
author | Adrian Roos <roosa@google.com> | 2014-05-19 12:43:26 +0200 |
---|---|---|
committer | Adrian Roos <roosa@google.com> | 2014-05-19 14:12:07 +0200 |
commit | 3eeb4e6e40e2c23a0bcfe24937688bd437c15e2a (patch) | |
tree | 8c0bf251ddcef343f6c84de820dc7127bbf543b0 /services/core/java/com | |
parent | a76a150ff18c84db7736769b0476d90c9126a40a (diff) | |
download | frameworks_base-3eeb4e6e40e2c23a0bcfe24937688bd437c15e2a.zip frameworks_base-3eeb4e6e40e2c23a0bcfe24937688bd437c15e2a.tar.gz frameworks_base-3eeb4e6e40e2c23a0bcfe24937688bd437c15e2a.tar.bz2 |
Fix cropping for fullscreen windows
Bug: 15046646
Change-Id: I526c0044e3715a4096373b8bbbdbd0c864be2df9
Diffstat (limited to 'services/core/java/com')
-rw-r--r-- | services/core/java/com/android/server/wm/WindowStateAnimator.java | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index 3c9d53e..1e79dcb 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -46,6 +46,7 @@ import android.view.MagnificationSpec; import android.view.Surface.OutOfResourcesException; import android.view.SurfaceControl; import android.view.SurfaceSession; +import android.view.View; import android.view.WindowManager; import android.view.WindowManagerPolicy; import android.view.WindowManager.LayoutParams; @@ -151,6 +152,10 @@ class WindowStateAnimator { static final int READY_TO_SHOW = 3; /** Set when the window has been shown in the screen the first time. */ static final int HAS_DRAWN = 4; + + private static final int SYSTEM_UI_FLAGS_LAYOUT_STABLE_FULLSCREEN = + View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; + static String drawStateToString(int state) { switch (state) { case NO_SURFACE: return "NO_SURFACE"; @@ -1176,9 +1181,15 @@ class WindowStateAnimator { // content insets as well. int offsetTop = Math.max(w.mSystemDecorRect.top, w.mContentInsets.top); mTmpClipRect.set(w.mSystemDecorRect); - mTmpClipRect.offset(0, -offsetTop); - mTmpClipRect.intersect(mClipRect); - mTmpClipRect.offset(0, offsetTop); + // Don't apply the workaround to apps explicitly requesting fullscreen layout. + if ((w.mSystemUiVisibility & SYSTEM_UI_FLAGS_LAYOUT_STABLE_FULLSCREEN) + == SYSTEM_UI_FLAGS_LAYOUT_STABLE_FULLSCREEN) { + mTmpClipRect.intersect(mClipRect); + } else { + mTmpClipRect.offset(0, -offsetTop); + mTmpClipRect.intersect(mClipRect); + mTmpClipRect.offset(0, offsetTop); + } clipRect = mTmpClipRect; } |