Merge change 7862 into donut
* changes:
* 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.
This commit is contained in:
@@ -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_COMPATIBLE_WINDOW;
|
||||||
import static android.view.WindowManager.LayoutParams.FLAG_DIM_BEHIND;
|
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_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_SYSTEM_ERROR;
|
||||||
import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
|
import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
|
||||||
import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
|
import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
|
||||||
@@ -1857,7 +1858,7 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo
|
|||||||
// is running.
|
// is running.
|
||||||
if (!mDisplayFrozen) {
|
if (!mDisplayFrozen) {
|
||||||
Animation a;
|
Animation a;
|
||||||
if ((lp.flags & FLAG_COMPATIBLE_WINDOW) != 0) {
|
if (lp != null && (lp.flags & FLAG_COMPATIBLE_WINDOW) != 0) {
|
||||||
a = new FadeInOutAnimation(enter);
|
a = new FadeInOutAnimation(enter);
|
||||||
if (DEBUG_ANIM) Log.v(TAG,
|
if (DEBUG_ANIM) Log.v(TAG,
|
||||||
"applying FadeInOutAnimation for a window in compatibility mode");
|
"applying FadeInOutAnimation for a window in compatibility mode");
|
||||||
@@ -5871,8 +5872,10 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo
|
|||||||
|
|
||||||
if ((mAttrs.flags & FLAG_COMPATIBLE_WINDOW) != 0) {
|
if ((mAttrs.flags & FLAG_COMPATIBLE_WINDOW) != 0) {
|
||||||
container.intersect(mCompatibleScreenFrame);
|
container.intersect(mCompatibleScreenFrame);
|
||||||
|
if ((mAttrs.flags & FLAG_LAYOUT_NO_LIMITS) == 0) {
|
||||||
display.intersect(mCompatibleScreenFrame);
|
display.intersect(mCompatibleScreenFrame);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
final int pw = container.right - container.left;
|
final int pw = container.right - container.left;
|
||||||
final int ph = container.bottom - container.top;
|
final int ph = container.bottom - container.top;
|
||||||
@@ -6588,12 +6591,17 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
final Rect frame = shownFrame ? mShownFrame : mFrame;
|
final Rect frame = shownFrame ? mShownFrame : mFrame;
|
||||||
if (frame.left <= 0 && frame.top <= 0
|
|
||||||
|
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.right >= screenWidth
|
||||||
&& frame.bottom >= screenHeight) {
|
&& frame.bottom >= screenHeight;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -6610,16 +6618,13 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo
|
|||||||
(mAttrs.flags & FLAG_COMPATIBLE_WINDOW) != 0 &&
|
(mAttrs.flags & FLAG_COMPATIBLE_WINDOW) != 0 &&
|
||||||
// only if it's visible
|
// only if it's visible
|
||||||
mHasDrawn && mViewVisibility == View.VISIBLE &&
|
mHasDrawn && mViewVisibility == View.VISIBLE &&
|
||||||
// and only if the application wanted to fill the screen
|
// and only if the application fills the compatible screen
|
||||||
mAttrs.width == mAttrs.FILL_PARENT &&
|
mFrame.left <= mCompatibleScreenFrame.left &&
|
||||||
mAttrs.height == mAttrs.FILL_PARENT &&
|
mFrame.top <= mCompatibleScreenFrame.top &&
|
||||||
// and only if the window is not hidden
|
mFrame.right >= mCompatibleScreenFrame.right &&
|
||||||
mFrame.left == mCompatibleScreenFrame.left &&
|
mFrame.bottom >= mCompatibleScreenFrame.bottom &&
|
||||||
// and starting window do not need background filler
|
// and starting window do not need background filler
|
||||||
mAttrs.type != mAttrs.TYPE_APPLICATION_STARTING &&
|
mAttrs.type != mAttrs.TYPE_APPLICATION_STARTING;
|
||||||
// and only if the screen is bigger
|
|
||||||
((mFrame.right - mFrame.right) < screenWidth ||
|
|
||||||
(mFrame.bottom - mFrame.top) < screenHeight);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isFullscreen(int screenWidth, int screenHeight) {
|
boolean isFullscreen(int screenWidth, int screenHeight) {
|
||||||
|
|||||||
Reference in New Issue
Block a user