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

Commit 8bf92fd2 authored by Tiger's avatar Tiger
Browse files

Get the navigation bar insets frame from the window

Instead of querying the navigation bar insets source frame from the
InsetsState with the internal insets type, this CL gets the frame from
the navigation bar window directly. So it won't need to search for the
insets source in the InsetsState, and this is a step to remove ITYPEs.

bug: 234093736
Test: Enable magnification in a11y and see if nav bar is excluded.
Change-Id: I1f7b9682a2823084fc093ea95d46c1740d6b775c
parent b9f60293
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -960,7 +960,7 @@ final class AccessibilityController {
                    // navigation bar insets into nonMagnifiedBounds. It happens when
                    // navigation mode is gestural.
                    if (isUntouchableNavigationBar(windowState, mTempRegion3)) {
                        final Rect navBarInsets = getNavBarInsets(mDisplayContent);
                        final Rect navBarInsets = getSystemBarInsetsFrame(windowState);
                        nonMagnifiedBounds.op(navBarInsets, Region.Op.UNION);
                        availableBounds.op(navBarInsets, Region.Op.DIFFERENCE);
                    }
@@ -1425,10 +1425,12 @@ final class AccessibilityController {
        return touchableRegion.isEmpty();
    }

    static Rect getNavBarInsets(DisplayContent displayContent) {
        final InsetsSource source = displayContent.getInsetsStateController().getRawInsetsState()
                .peekSource(ITYPE_NAVIGATION_BAR);
        return source != null ? source.getFrame() : EMPTY_RECT;
    static Rect getSystemBarInsetsFrame(WindowState win) {
        if (win == null) {
            return EMPTY_RECT;
        }
        final InsetsSourceProvider provider = win.getControllableInsetProvider();
        return provider != null ? provider.getSource().getFrame() : EMPTY_RECT;
    }

    /**
@@ -1581,7 +1583,10 @@ final class AccessibilityController {
                        // region of navigation bar inset because all touch events from this region
                        // would be received by launcher, i.e. this region is a un-touchable one
                        // for the application.
                        unaccountedSpace.op(getNavBarInsets(dc), unaccountedSpace,
                        unaccountedSpace.op(
                                getSystemBarInsetsFrame(
                                        mService.mWindowMap.get(a11yWindow.getWindowInfo().token)),
                                unaccountedSpace,
                                Region.Op.REVERSE_DIFFERENCE);
                    }