diff options
author | Mitsuru Oshima <oshima@google.com> | 2009-07-20 14:01:43 -0700 |
---|---|---|
committer | Mitsuru Oshima <oshima@google.com> | 2009-07-20 14:01:43 -0700 |
commit | d2967e261650651414faa2a0def9ac2bffd63bec (patch) | |
tree | af93b3571da71891266098ed7edfa06691928943 /services | |
parent | 51cefb2ef58e18acad800c9aa63c2a7eee4d9731 (diff) | |
download | frameworks_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.java | 37 |
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) { |