Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fd87f823 authored by Yunfan Chen's avatar Yunfan Chen Committed by Android (Google) Code Review
Browse files

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

parents 1ee1185b 896bb40d
Loading
Loading
Loading
Loading
+20 −35
Original line number Diff line number Diff line
@@ -1733,42 +1733,27 @@ 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;
        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(safeInsetsLeft
                                    + mEdgeBackGestureHandler.getEdgeWidthLeft(), 0, 0, 0), null),
                    new InsetsFrameProvider(ITYPE_RIGHT_GESTURES,
                            InsetsFrameProvider.SOURCE_DISPLAY,
                            Insets.of(0, 0, safeInsetsRight
                                    + mEdgeBackGestureHandler.getEdgeWidthRight(), 0), null),
                        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() {
        return mNavBarMode == NAV_BAR_MODE_GESTURAL && mOrientationHandle != null;