diff options
-rw-r--r-- | policy/src/com/android/internal/policy/impl/PhoneWindowManager.java | 10 | ||||
-rw-r--r-- | services/java/com/android/server/wm/WindowStateAnimator.java | 4 |
2 files changed, 13 insertions, 1 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index dcaf3d6..faca949 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -3466,6 +3466,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (mStatusBarController.setBarShowingLw(true)) { changes |= FINISH_LAYOUT_REDO_LAYOUT; } + // Maintain fullscreen layout until incoming animation is complete. + topIsFullscreen = mTopIsFullscreen && mStatusBar.isAnimatingLw(); } else if (mTopFullscreenOpaqueWindowState != null) { if (localLOGV) { Slog.d(TAG, "frame: " + mTopFullscreenOpaqueWindowState.getFrameLw() @@ -3499,7 +3501,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } - mTopIsFullscreen = topIsFullscreen; + if (mTopIsFullscreen != topIsFullscreen) { + if (!topIsFullscreen) { + // Force another layout when status bar becomes fully shown. + changes |= FINISH_LAYOUT_REDO_LAYOUT; + } + mTopIsFullscreen = topIsFullscreen; + } // Hide the key guard if a visible window explicitly specifies that it wants to be // displayed when the screen is locked. diff --git a/services/java/com/android/server/wm/WindowStateAnimator.java b/services/java/com/android/server/wm/WindowStateAnimator.java index af00d83..c405170 100644 --- a/services/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/java/com/android/server/wm/WindowStateAnimator.java @@ -360,6 +360,10 @@ class WindowStateAnimator { + mWin.mToken + ": first real window done animating"); mService.mFinishedStarting.add(mWin.mAppToken); mService.mH.sendEmptyMessage(H.FINISHED_STARTING); + } else if (mAttrType == LayoutParams.TYPE_STATUS_BAR && mWin.mPolicyVisibility) { + // Upon completion of a not-visible to visible status bar animation a relayout is + // required. + mWin.mDisplayContent.layoutNeeded = true; } finishExit(); |