Merge "Reland "Fix missing gesture insets for 3-button navigation"" into udc-dev

This commit is contained in:
Yunfan Chen
2023-03-06 02:14:18 +00:00
committed by Android (Google) Code Review

View File

@@ -1733,41 +1733,26 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
bottomTappableProvider = new InsetsFrameProvider(ITYPE_BOTTOM_TAPPABLE_ELEMENT);
}
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
};
}
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;
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(gestureInsetsLeft, 0, 0, 0), null),
new InsetsFrameProvider(ITYPE_RIGHT_GESTURES, InsetsFrameProvider.SOURCE_DISPLAY,
Insets.of(0, 0, gestureInsetsRight, 0), null),
bottomTappableProvider
};
}
private boolean canShowSecondaryHandle() {