diff options
| author | John Spurlock <jspurlock@google.com> | 2013-10-06 19:16:13 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2013-10-06 19:16:13 -0700 |
| commit | b88ede00ac12fb359b490a5167cd595ebde7e805 (patch) | |
| tree | b768ec8e1a3e1f13d04d2b2e90462f1d07b1188e /core/java/android/view/ViewRootImpl.java | |
| parent | 719e486f54b668d13680552f96558ee30d220a00 (diff) | |
| parent | d5102f19653f6b00ce872435c5efb5cb630deed7 (diff) | |
am d5102f19: Merge "Transparent system ui flags -> Translucent WM flags." into klp-dev
* commit 'd5102f19653f6b00ce872435c5efb5cb630deed7':
Transparent system ui flags -> Translucent WM flags.
Diffstat (limited to 'core/java/android/view/ViewRootImpl.java')
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 7e3ee5f64057..beb7366ec965 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -754,6 +754,11 @@ public final class ViewRootImpl implements ViewParent, attrs.systemUiVisibility = mWindowAttributes.systemUiVisibility; attrs.subtreeSystemUiVisibility = mWindowAttributes.subtreeSystemUiVisibility; mWindowAttributesChangesFlag = mWindowAttributes.copyFrom(attrs); + if ((mWindowAttributesChangesFlag + & WindowManager.LayoutParams.TRANSLUCENT_FLAGS_CHANGED) != 0) { + // Recompute system ui visibility. + mAttachInfo.mRecomputeGlobalAttributes = true; + } if (mWindowAttributes.packageName == null) { mWindowAttributes.packageName = mBasePackageName; } @@ -1026,6 +1031,7 @@ public final class ViewRootImpl implements ViewParent, mView.dispatchCollectViewAttributes(attachInfo, 0); attachInfo.mSystemUiVisibility &= ~attachInfo.mDisabledSystemUiVisibility; WindowManager.LayoutParams params = mWindowAttributes; + attachInfo.mSystemUiVisibility |= getImpliedSystemUiVisibility(params); if (attachInfo.mKeepScreenOn != oldScreenOn || attachInfo.mSystemUiVisibility != params.subtreeSystemUiVisibility || attachInfo.mHasSystemUiListeners != params.hasSystemUiListeners) { @@ -1039,6 +1045,18 @@ public final class ViewRootImpl implements ViewParent, return false; } + private int getImpliedSystemUiVisibility(WindowManager.LayoutParams params) { + int vis = 0; + // Translucent decor window flags imply stable system ui visibility. + if ((params.flags & WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) != 0) { + vis |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; + } + if ((params.flags & WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) != 0) { + vis |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; + } + return vis; + } + private boolean measureHierarchy(final View host, final WindowManager.LayoutParams lp, final Resources res, final int desiredWindowWidth, final int desiredWindowHeight) { int childWidthMeasureSpec; |
