Reland "Fix missing gesture insets for 3-button navigation"

This reverts commit 554c2cfc39.

Reason for revert: Try to reland with fix
Bug: 263234979
Test: NexusLauncherOutOfProcTests

Change-Id: Iabc80cc45a8c93375f83170d89815429ea6088f4
This commit is contained in:
Yunfan Chen
2023-02-20 03:36:51 +00:00
parent c949def472
commit 896bb40d40

View File

@@ -1729,41 +1729,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() {