Merge "Create input consumer only when nav bar is hidden by client" into rvc-dev am: 0bd7672693
Change-Id: I649a44fc4ec8e299af76e1fef5974f18edd54979
This commit is contained in:
@@ -1494,9 +1494,7 @@ public class DisplayPolicy {
|
|||||||
final int behavior = mLastBehavior;
|
final int behavior = mLastBehavior;
|
||||||
boolean navVisible = ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL
|
boolean navVisible = ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL
|
||||||
? (sysui & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0
|
? (sysui & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0
|
||||||
: mNavigationBar != null && mNavigationBar.getControllableInsetProvider() != null
|
: isNavigationBarRequestedVisible();
|
||||||
&& mNavigationBar.getControllableInsetProvider().isClientVisible()
|
|
||||||
&& !mDisplayContent.getInsetsPolicy().isTransient(ITYPE_NAVIGATION_BAR);
|
|
||||||
boolean navTranslucent = (sysui
|
boolean navTranslucent = (sysui
|
||||||
& (View.NAVIGATION_BAR_TRANSLUCENT | View.NAVIGATION_BAR_TRANSPARENT)) != 0;
|
& (View.NAVIGATION_BAR_TRANSLUCENT | View.NAVIGATION_BAR_TRANSPARENT)) != 0;
|
||||||
boolean immersive = (sysui & View.SYSTEM_UI_FLAG_IMMERSIVE) != 0
|
boolean immersive = (sysui & View.SYSTEM_UI_FLAG_IMMERSIVE) != 0
|
||||||
@@ -1533,6 +1531,14 @@ public class DisplayPolicy {
|
|||||||
mLastNotificationShadeForcesShowingNavigation = notificationShadeForcesShowingNavigation;
|
mLastNotificationShadeForcesShowingNavigation = notificationShadeForcesShowingNavigation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean isNavigationBarRequestedVisible() {
|
||||||
|
final InsetsSourceProvider provider =
|
||||||
|
mDisplayContent.getInsetsStateController().peekSourceProvider(ITYPE_NAVIGATION_BAR);
|
||||||
|
return provider == null
|
||||||
|
? InsetsState.getDefaultVisibility(ITYPE_NAVIGATION_BAR)
|
||||||
|
: provider.isClientVisible();
|
||||||
|
}
|
||||||
|
|
||||||
void updateHideNavInputEventReceiver(boolean navVisible, boolean navAllowedHidden) {
|
void updateHideNavInputEventReceiver(boolean navVisible, boolean navAllowedHidden) {
|
||||||
// When the navigation bar isn't visible, we put up a fake input window to catch all
|
// When the navigation bar isn't visible, we put up a fake input window to catch all
|
||||||
// touch events. This way we can detect when the user presses anywhere to bring back the
|
// touch events. This way we can detect when the user presses anywhere to bring back the
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ class InsetsPolicy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateHideNavInputEventReceiver() {
|
private void updateHideNavInputEventReceiver() {
|
||||||
mPolicy.updateHideNavInputEventReceiver(!isHidden(ITYPE_NAVIGATION_BAR),
|
mPolicy.updateHideNavInputEventReceiver(mPolicy.isNavigationBarRequestedVisible(),
|
||||||
mFocusedWin != null
|
mFocusedWin != null
|
||||||
&& mFocusedWin.mAttrs.insetsFlags.behavior != BEHAVIOR_SHOW_BARS_BY_TOUCH);
|
&& mFocusedWin.mAttrs.insetsFlags.behavior != BEHAVIOR_SHOW_BARS_BY_TOUCH);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user