am 3aa959b9: Merge "Fix issue #3362666 Activities launched from ongoing notifications don\'t animate" into honeycomb
* commit '3aa959b9ce7ac4ac241033b3eea9f2c0ce34d554': Fix issue #3362666 Activities launched from ongoing notifications don't animate
This commit is contained in:
@@ -1965,23 +1965,29 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
// behind it.
|
||||
return false;
|
||||
}
|
||||
if (mStatusBar != null && mStatusBar.isVisibleLw()) {
|
||||
Rect rect = new Rect(mStatusBar.getShownFrameLw());
|
||||
for (int i=mStatusBarPanels.size()-1; i>=0; i--) {
|
||||
WindowState w = mStatusBarPanels.get(i);
|
||||
if (w.isVisibleLw()) {
|
||||
rect.union(w.getShownFrameLw());
|
||||
if (false) {
|
||||
// Don't do this on the tablet, since the system bar never completely
|
||||
// covers the screen, and with all its transparency this will
|
||||
// incorrectly think it does cover it when it doesn't. We'll revisit
|
||||
// this later when we re-do the phone status bar.
|
||||
if (mStatusBar != null && mStatusBar.isVisibleLw()) {
|
||||
Rect rect = new Rect(mStatusBar.getShownFrameLw());
|
||||
for (int i=mStatusBarPanels.size()-1; i>=0; i--) {
|
||||
WindowState w = mStatusBarPanels.get(i);
|
||||
if (w.isVisibleLw()) {
|
||||
rect.union(w.getShownFrameLw());
|
||||
}
|
||||
}
|
||||
final int insetw = mRestrictedScreenWidth/10;
|
||||
final int inseth = mRestrictedScreenHeight/10;
|
||||
if (rect.contains(insetw, inseth, mRestrictedScreenWidth-insetw,
|
||||
mRestrictedScreenHeight-inseth)) {
|
||||
// All of the status bar windows put together cover the
|
||||
// screen, so the app can't be seen. (Note this test doesn't
|
||||
// work if the rects of these windows are at off offsets or
|
||||
// sizes, causing gaps in the rect union we have computed.)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
final int insetw = mRestrictedScreenWidth/10;
|
||||
final int inseth = mRestrictedScreenHeight/10;
|
||||
if (rect.contains(insetw, inseth, mRestrictedScreenWidth-insetw,
|
||||
mRestrictedScreenHeight-inseth)) {
|
||||
// All of the status bar windows put together cover the
|
||||
// screen, so the app can't be seen. (Note this test doesn't
|
||||
// work if the rects of these windows are at off offsets or
|
||||
// sizes, causing gaps in the rect union we have computed.)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -3031,7 +3031,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
}
|
||||
|
||||
private AttributeCache.Entry getCachedAnimations(WindowManager.LayoutParams lp) {
|
||||
if (DEBUG_ANIM) Slog.v(TAG, "Loading animations: params package="
|
||||
if (DEBUG_ANIM) Slog.v(TAG, "Loading animations: layout params pkg="
|
||||
+ (lp != null ? lp.packageName : null)
|
||||
+ " resId=0x" + (lp != null ? Integer.toHexString(lp.windowAnimations) : null));
|
||||
if (lp != null && lp.windowAnimations != 0) {
|
||||
@@ -3052,7 +3052,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
}
|
||||
|
||||
private AttributeCache.Entry getCachedAnimations(String packageName, int resId) {
|
||||
if (DEBUG_ANIM) Slog.v(TAG, "Loading animations: params package="
|
||||
if (DEBUG_ANIM) Slog.v(TAG, "Loading animations: package="
|
||||
+ packageName + " resId=0x" + Integer.toHexString(resId));
|
||||
if (packageName != null) {
|
||||
if ((resId&0xFF000000) == 0x01000000) {
|
||||
@@ -9957,8 +9957,8 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
// The top-most window will supply the layout params,
|
||||
// and we will determine it below.
|
||||
LayoutParams animLp = null;
|
||||
AppWindowToken animToken = null;
|
||||
int bestAnimLayer = -1;
|
||||
boolean fullscreenAnim = false;
|
||||
|
||||
if (DEBUG_APP_TRANSITIONS) Slog.v(TAG,
|
||||
"New wallpaper target=" + mWallpaperTarget
|
||||
@@ -10000,11 +10000,18 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
// window, we will always use its anim.
|
||||
if ((ws.mAttrs.flags&FLAG_COMPATIBLE_WINDOW) != 0) {
|
||||
animLp = ws.mAttrs;
|
||||
animToken = ws.mAppToken;
|
||||
bestAnimLayer = Integer.MAX_VALUE;
|
||||
} else if (ws.mLayer > bestAnimLayer) {
|
||||
} else if (!fullscreenAnim || ws.mLayer > bestAnimLayer) {
|
||||
animLp = ws.mAttrs;
|
||||
bestAnimLayer = ws.mLayer;
|
||||
}
|
||||
fullscreenAnim = true;
|
||||
}
|
||||
} else if (!fullscreenAnim) {
|
||||
WindowState ws = wtoken.findMainWindow();
|
||||
if (ws != null) {
|
||||
if (ws.mLayer > bestAnimLayer) {
|
||||
animLp = ws.mAttrs;
|
||||
animToken = ws.mAppToken;
|
||||
bestAnimLayer = ws.mLayer;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user