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

Commit e66e4a36 authored by Liana Kazanova's avatar Liana Kazanova Committed by Android (Google) Code Review
Browse files

Merge "Revert "Fix missing gesture insets for 3-button navigation""

parents b6b8d62d 554c2cfc
Loading
Loading
Loading
Loading
+35 −23
Original line number Diff line number Diff line
@@ -1729,30 +1729,42 @@ 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;
        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_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),
                            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() {
        return mNavBarMode == NAV_BAR_MODE_GESTURAL && mOrientationHandle != null;