Merge "Force consuming system bars if nav bar is shown forcibly" into udc-dev
This commit is contained in:
@@ -177,7 +177,8 @@ public class InsetsState implements Parcelable {
|
||||
if ((legacyWindowFlags & FLAG_FULLSCREEN) != 0) {
|
||||
compatInsetsTypes &= ~statusBars();
|
||||
}
|
||||
if (clearsCompatInsets(windowType, legacyWindowFlags, windowingMode)) {
|
||||
if (clearsCompatInsets(windowType, legacyWindowFlags, windowingMode)
|
||||
&& !alwaysConsumeSystemBars) {
|
||||
compatInsetsTypes = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1111,8 +1111,13 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
|
||||
: controller.getSystemBarsAppearance();
|
||||
|
||||
if (insets != null) {
|
||||
final boolean clearsCompatInsets = clearsCompatInsets(attrs.type, attrs.flags,
|
||||
getResources().getConfiguration().windowConfiguration.getWindowingMode());
|
||||
mLastShouldAlwaysConsumeSystemBars = insets.shouldAlwaysConsumeSystemBars();
|
||||
|
||||
final boolean clearsCompatInsets =
|
||||
clearsCompatInsets(attrs.type, attrs.flags,
|
||||
getResources().getConfiguration().windowConfiguration
|
||||
.getWindowingMode())
|
||||
&& !mLastShouldAlwaysConsumeSystemBars;
|
||||
final Insets stableBarInsets = insets.getInsetsIgnoringVisibility(
|
||||
WindowInsets.Type.systemBars());
|
||||
final Insets systemInsets = clearsCompatInsets
|
||||
@@ -1143,7 +1148,6 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
|
||||
disallowAnimate |= (hasLeftStableInset != mLastHasLeftStableInset);
|
||||
mLastHasLeftStableInset = hasLeftStableInset;
|
||||
|
||||
mLastShouldAlwaysConsumeSystemBars = insets.shouldAlwaysConsumeSystemBars();
|
||||
mLastSuppressScrimTypes = insets.getSuppressScrimTypes();
|
||||
}
|
||||
|
||||
|
||||
@@ -2368,7 +2368,8 @@ public class DisplayPolicy {
|
||||
// We need to force the consumption of the system bars if they are force shown or if they
|
||||
// are controlled by a remote insets controller.
|
||||
mForceConsumeSystemBars = mForceShowSystemBars
|
||||
|| mDisplayContent.getInsetsPolicy().remoteInsetsControllerControlsSystemBars(win);
|
||||
|| getInsetsPolicy().remoteInsetsControllerControlsSystemBars(win)
|
||||
|| getInsetsPolicy().forcesShowingNavigationBars(win);
|
||||
mDisplayContent.getInsetsPolicy().updateBarControlTarget(win);
|
||||
|
||||
final boolean topAppHidesStatusBar = topAppHidesSystemBar(Type.statusBars());
|
||||
|
||||
@@ -567,8 +567,7 @@ class InsetsPolicy {
|
||||
return focusedWin;
|
||||
}
|
||||
}
|
||||
if (mPolicy.isForceShowNavigationBarEnabled() && focusedWin != null
|
||||
&& focusedWin.getActivityType() == ACTIVITY_TYPE_STANDARD) {
|
||||
if (forcesShowingNavigationBars(focusedWin)) {
|
||||
// When "force show navigation bar" is enabled, it means both force visible is true, and
|
||||
// we are in 3-button navigation. In this mode, the navigation bar is forcibly shown
|
||||
// when activity type is ACTIVITY_TYPE_STANDARD which means Launcher or Recent could
|
||||
@@ -604,6 +603,11 @@ class InsetsPolicy {
|
||||
return focusedWin;
|
||||
}
|
||||
|
||||
boolean forcesShowingNavigationBars(WindowState win) {
|
||||
return mPolicy.isForceShowNavigationBarEnabled() && win != null
|
||||
&& win.getActivityType() == ACTIVITY_TYPE_STANDARD;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines whether the remote insets controller should take control of system bars for all
|
||||
* windows.
|
||||
|
||||
Reference in New Issue
Block a user