diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java index 0efe3c2573dba..d5d73258bb086 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java @@ -1729,29 +1729,41 @@ public class NavigationBar extends ViewController implements bottomTappableProvider = new InsetsFrameProvider(ITYPE_BOTTOM_TAPPABLE_ELEMENT); } - final DisplayCutout cutout = userContext.getDisplay().getCutout(); - final int safeInsetsLeft = cutout != null ? cutout.getSafeInsetLeft() : 0; - final int safeInsetsRight = cutout != null ? cutout.getSafeInsetRight() : 0; - final int gestureHeight = userContext.getResources().getDimensionPixelSize( - com.android.internal.R.dimen.navigation_bar_gesture_height); - final boolean handlingGesture = mEdgeBackGestureHandler.isHandlingGestures(); - final int gestureInsetsLeft = handlingGesture - ? mEdgeBackGestureHandler.getEdgeWidthLeft() + safeInsetsLeft : 0; - final int gestureInsetsRight = handlingGesture - ? mEdgeBackGestureHandler.getEdgeWidthRight() + safeInsetsRight : 0; - final InsetsFrameProvider mandatoryGestureProvider = handlingGesture - ? new InsetsFrameProvider(ITYPE_BOTTOM_MANDATORY_GESTURES, - Insets.of(0, 0, 0, gestureHeight)) - : new InsetsFrameProvider(ITYPE_BOTTOM_MANDATORY_GESTURES); - return new InsetsFrameProvider[] { - navBarProvider, - mandatoryGestureProvider, - new InsetsFrameProvider(ITYPE_LEFT_GESTURES, InsetsFrameProvider.SOURCE_DISPLAY, - Insets.of(gestureInsetsLeft, 0, 0, 0), null), - new InsetsFrameProvider(ITYPE_RIGHT_GESTURES, InsetsFrameProvider.SOURCE_DISPLAY, - Insets.of(0, 0, gestureInsetsRight, 0), null), - bottomTappableProvider - }; + if (!mEdgeBackGestureHandler.isHandlingGestures()) { + // 2/3 button navigation is on. Do not provide any gesture insets here. But need to keep + // the provider to support runtime update. + return new InsetsFrameProvider[] { + navBarProvider, + new InsetsFrameProvider( + ITYPE_BOTTOM_MANDATORY_GESTURES, Insets.NONE), + new InsetsFrameProvider(ITYPE_LEFT_GESTURES, InsetsFrameProvider.SOURCE_DISPLAY, + Insets.NONE, null), + new InsetsFrameProvider(ITYPE_RIGHT_GESTURES, + InsetsFrameProvider.SOURCE_DISPLAY, + Insets.NONE, null), + bottomTappableProvider + }; + } else { + // Gesture navigation + final int gestureHeight = userContext.getResources().getDimensionPixelSize( + com.android.internal.R.dimen.navigation_bar_gesture_height); + final DisplayCutout cutout = userContext.getDisplay().getCutout(); + final int safeInsetsLeft = cutout != null ? cutout.getSafeInsetLeft() : 0; + final int safeInsetsRight = cutout != null ? cutout.getSafeInsetRight() : 0; + return new InsetsFrameProvider[] { + navBarProvider, + new InsetsFrameProvider( + ITYPE_BOTTOM_MANDATORY_GESTURES, Insets.of(0, 0, 0, gestureHeight)), + new InsetsFrameProvider(ITYPE_LEFT_GESTURES, InsetsFrameProvider.SOURCE_DISPLAY, + Insets.of(safeInsetsLeft + + mEdgeBackGestureHandler.getEdgeWidthLeft(), 0, 0, 0), null), + new InsetsFrameProvider(ITYPE_RIGHT_GESTURES, + InsetsFrameProvider.SOURCE_DISPLAY, + Insets.of(0, 0, safeInsetsRight + + mEdgeBackGestureHandler.getEdgeWidthRight(), 0), null), + bottomTappableProvider + }; + } } private boolean canShowSecondaryHandle() {