diff options
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 10 | ||||
| -rw-r--r-- | core/java/android/view/WindowInsets.java | 5 | ||||
| -rw-r--r-- | core/res/res/values/config.xml | 3 | ||||
| -rw-r--r-- | core/res/res/values/symbols.xml | 1 |
4 files changed, 18 insertions, 1 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index eec4354bec4f..4e4f37ba995e 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -1173,7 +1173,15 @@ public final class ViewRootImpl implements ViewParent, void dispatchApplyInsets(View host) { mFitSystemWindowsInsets.set(mAttachInfo.mContentInsets); - host.dispatchApplyWindowInsets(new WindowInsets(mFitSystemWindowsInsets)); + boolean isRound = false; + if ((mWindowAttributes.flags & WindowManager.LayoutParams.FLAG_LAYOUT_IN_OVERSCAN) != 0 + && mDisplay.getDisplayId() == 0) { + // we're fullscreen and not hosted in an ActivityView + isRound = mContext.getResources().getBoolean( + com.android.internal.R.bool.config_windowIsRound); + } + host.dispatchApplyWindowInsets(new WindowInsets( + mFitSystemWindowsInsets, isRound)); } private void performTraversals() { diff --git a/core/java/android/view/WindowInsets.java b/core/java/android/view/WindowInsets.java index f8cc793f477b..2160efeadc0e 100644 --- a/core/java/android/view/WindowInsets.java +++ b/core/java/android/view/WindowInsets.java @@ -51,6 +51,11 @@ public class WindowInsets { } /** @hide */ + public WindowInsets(Rect systemWindowInsets, boolean isRound) { + this(systemWindowInsets, EMPTY_RECT, isRound); + } + + /** @hide */ public WindowInsets(Rect systemWindowInsets, Rect windowDecorInsets, boolean isRound) { mSystemWindowInsets = systemWindowInsets; mWindowDecorInsets = windowDecorInsets; diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index f5492904d74a..2df5dc12df82 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -1429,4 +1429,7 @@ 2 - The device DOES NOT have a permanent menu key; ignore autodetection. --> <integer name="config_overrideHasPermanentMenuKey">0</integer> + <!-- default window inset isRound property --> + <bool name="config_windowIsRound">false</bool> + </resources> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index b0f19ecc4d5a..03c617ac52ca 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -291,6 +291,7 @@ <java-symbol type="bool" name="config_wifi_batched_scan_supported" /> <java-symbol type="bool" name="config_enableMultiUserUI"/> <java-symbol type="bool" name="config_disableUsbPermissionDialogs"/> + <java-symbol type="bool" name="config_windowIsRound" /> <java-symbol type="integer" name="config_cursorWindowSize" /> <java-symbol type="integer" name="config_extraFreeKbytesAdjust" /> |