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

Commit bbca8a9c authored by Graciela Wissen Putri's avatar Graciela Wissen Putri
Browse files

Add taskbarFrameHeight getters to SystemBarUtils

Add shared utils to get taskbarFrameHeight accessible from both core and
shell. This is required to predict desktop windowing mode insets when
current display is using gesture navbar outside of desktop windowing.

Flag: EXEMPT adding getters
Test: None
Bug: 280496681
Change-Id: Id4104280a3a085b8c67382e6802b4d1b97723c9a
parent 187ee73b
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -92,4 +92,11 @@ public final class SystemBarUtils {
        // Equals to status bar height if status bar height is bigger.
        return Math.max(defaultSize, statusBarHeight);
    }

    /**
     * Gets the taskbar frame height.
     */
    public static int getTaskbarHeight(Resources res) {
        return res.getDimensionPixelSize(R.dimen.taskbar_frame_height);
    }
}
+17 −2
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ public class DisplayLayout {
    private boolean mHasNavigationBar = false;
    private boolean mHasStatusBar = false;
    private int mNavBarFrameHeight = 0;
    private int mTaskbarFrameHeight = 0;
    private boolean mAllowSeamlessRotationDespiteNavBarMoving = false;
    private boolean mNavigationBarCanMove = false;
    private boolean mReverseDefaultRotation = false;
@@ -119,6 +120,7 @@ public class DisplayLayout {
                && mNavigationBarCanMove == other.mNavigationBarCanMove
                && mReverseDefaultRotation == other.mReverseDefaultRotation
                && mNavBarFrameHeight == other.mNavBarFrameHeight
                && mTaskbarFrameHeight == other.mTaskbarFrameHeight
                && Objects.equals(mInsetsState, other.mInsetsState);
    }

@@ -126,7 +128,7 @@ public class DisplayLayout {
    public int hashCode() {
        return Objects.hash(mUiMode, mWidth, mHeight, mCutout, mRotation, mDensityDpi,
                mNonDecorInsets, mStableInsets, mHasNavigationBar, mHasStatusBar,
                mNavBarFrameHeight, mAllowSeamlessRotationDespiteNavBarMoving,
                mNavBarFrameHeight, mTaskbarFrameHeight, mAllowSeamlessRotationDespiteNavBarMoving,
                mNavigationBarCanMove, mReverseDefaultRotation, mInsetsState);
    }

@@ -176,6 +178,7 @@ public class DisplayLayout {
        mNavigationBarCanMove = dl.mNavigationBarCanMove;
        mReverseDefaultRotation = dl.mReverseDefaultRotation;
        mNavBarFrameHeight = dl.mNavBarFrameHeight;
        mTaskbarFrameHeight = dl.mTaskbarFrameHeight;
        mNonDecorInsets.set(dl.mNonDecorInsets);
        mStableInsets.set(dl.mStableInsets);
        mInsetsState.set(dl.mInsetsState, true /* copySources */);
@@ -214,7 +217,8 @@ public class DisplayLayout {
        if (mHasStatusBar) {
            convertNonDecorInsetsToStableInsets(res, mStableInsets, mCutout, mHasStatusBar);
        }
        mNavBarFrameHeight = getNavigationBarFrameHeight(res, mWidth > mHeight);
        mNavBarFrameHeight = getNavigationBarFrameHeight(res, /* landscape */ mWidth > mHeight);
        mTaskbarFrameHeight = SystemBarUtils.getTaskbarHeight(res);
    }

    /**
@@ -321,6 +325,17 @@ public class DisplayLayout {
        outBounds.inset(mStableInsets);
    }

    /** Predicts the calculated stable bounds when in Desktop Mode. */
    public void getStableBoundsForDesktopMode(Rect outBounds) {
        getStableBounds(outBounds);

        if (mNavBarFrameHeight != mTaskbarFrameHeight) {
            // Currently not in pinned taskbar mode, exclude taskbar insets instead of current
            // navigation insets from bounds.
            outBounds.bottom = mHeight - mTaskbarFrameHeight;
        }
    }

    /**
     * Gets navigation bar position for this layout
     * @return Navigation bar position for this layout.
+0 −1
Original line number Diff line number Diff line
@@ -550,7 +550,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp

    /** Save allocating when calculating rects */
    private final Rect mTmpRect = new Rect();
    private final Rect mTmpRect2 = new Rect();
    private final Region mTmpRegion = new Region();

    private final Configuration mTmpConfiguration = new Configuration();