summaryrefslogtreecommitdiffstats
path: root/services/core/java/com
diff options
context:
space:
mode:
authorAdrian Roos <roosa@google.com>2014-05-19 12:43:26 +0200
committerAdrian Roos <roosa@google.com>2014-05-19 14:12:07 +0200
commit3eeb4e6e40e2c23a0bcfe24937688bd437c15e2a (patch)
tree8c0bf251ddcef343f6c84de820dc7127bbf543b0 /services/core/java/com
parenta76a150ff18c84db7736769b0476d90c9126a40a (diff)
downloadframeworks_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.java17
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;
}