summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorMitsuru Oshima <oshima@google.com>2009-07-20 14:01:43 -0700
committerMitsuru Oshima <oshima@google.com>2009-07-20 14:01:43 -0700
commitd2967e261650651414faa2a0def9ac2bffd63bec (patch)
treeaf93b3571da71891266098ed7edfa06691928943 /services
parent51cefb2ef58e18acad800c9aa63c2a7eee4d9731 (diff)
downloadframeworks_base-d2967e261650651414faa2a0def9ac2bffd63bec.zip
frameworks_base-d2967e261650651414faa2a0def9ac2bffd63bec.tar.gz
frameworks_base-d2967e261650651414faa2a0def9ac2bffd63bec.tar.bz2
* Don't clip the display if LAYOUT_NO_LIMITS is specified (as with PhoneWindowmanager does)
* FullScreen mode was not hiding status bar for app in compatibility mode * fixed fillsScreenLw to take compatibility window into account * Fixed the logic in needsBackgroundFiller to be consistent with other places. * Fix NPE in WindowManagerService#applyAnimationLocked LayoutParam can be null.
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/WindowManagerService.java37
1 files changed, 21 insertions, 16 deletions
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index 5425709..2937ed0 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -27,6 +27,7 @@ import static android.view.WindowManager.LayoutParams.FLAG_BLUR_BEHIND;
import static android.view.WindowManager.LayoutParams.FLAG_COMPATIBLE_WINDOW;
import static android.view.WindowManager.LayoutParams.FLAG_DIM_BEHIND;
import static android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
+import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
import static android.view.WindowManager.LayoutParams.FLAG_SYSTEM_ERROR;
import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
@@ -1857,7 +1858,7 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo
// is running.
if (!mDisplayFrozen) {
Animation a;
- if ((lp.flags & FLAG_COMPATIBLE_WINDOW) != 0) {
+ if (lp != null && (lp.flags & FLAG_COMPATIBLE_WINDOW) != 0) {
a = new FadeInOutAnimation(enter);
if (DEBUG_ANIM) Log.v(TAG,
"applying FadeInOutAnimation for a window in compatibility mode");
@@ -5871,7 +5872,9 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo
if ((mAttrs.flags & FLAG_COMPATIBLE_WINDOW) != 0) {
container.intersect(mCompatibleScreenFrame);
- display.intersect(mCompatibleScreenFrame);
+ if ((mAttrs.flags & FLAG_LAYOUT_NO_LIMITS) == 0) {
+ display.intersect(mCompatibleScreenFrame);
+ }
}
final int pw = container.right - container.left;
@@ -6588,12 +6591,17 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo
return false;
}
final Rect frame = shownFrame ? mShownFrame : mFrame;
- if (frame.left <= 0 && frame.top <= 0
- && frame.right >= screenWidth
- && frame.bottom >= screenHeight) {
- return true;
+
+ if ((mAttrs.flags & FLAG_COMPATIBLE_WINDOW) != 0) {
+ return frame.left <= mCompatibleScreenFrame.left &&
+ frame.top <= mCompatibleScreenFrame.top &&
+ frame.right >= mCompatibleScreenFrame.right &&
+ frame.bottom >= mCompatibleScreenFrame.bottom;
+ } else {
+ return frame.left <= 0 && frame.top <= 0
+ && frame.right >= screenWidth
+ && frame.bottom >= screenHeight;
}
- return false;
}
/**
@@ -6610,16 +6618,13 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo
(mAttrs.flags & FLAG_COMPATIBLE_WINDOW) != 0 &&
// only if it's visible
mHasDrawn && mViewVisibility == View.VISIBLE &&
- // and only if the application wanted to fill the screen
- mAttrs.width == mAttrs.FILL_PARENT &&
- mAttrs.height == mAttrs.FILL_PARENT &&
- // and only if the window is not hidden
- mFrame.left == mCompatibleScreenFrame.left &&
+ // and only if the application fills the compatible screen
+ mFrame.left <= mCompatibleScreenFrame.left &&
+ mFrame.top <= mCompatibleScreenFrame.top &&
+ mFrame.right >= mCompatibleScreenFrame.right &&
+ mFrame.bottom >= mCompatibleScreenFrame.bottom &&
// and starting window do not need background filler
- mAttrs.type != mAttrs.TYPE_APPLICATION_STARTING &&
- // and only if the screen is bigger
- ((mFrame.right - mFrame.right) < screenWidth ||
- (mFrame.bottom - mFrame.top) < screenHeight);
+ mAttrs.type != mAttrs.TYPE_APPLICATION_STARTING;
}
boolean isFullscreen(int screenWidth, int screenHeight) {