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

Commit 2accbf90 authored by Adam Powell's avatar Adam Powell
Browse files

Revert the revert of adding isRound to WindowInsets after early merge

This reverts commit 01ebfbd0.

Change-Id: I3d5a3523a1505cc3bfd0172c7282a8eda21ae206
parent 01ebfbd0
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -30958,6 +30958,7 @@ package android.view {
    method public boolean hasInsets();
    method public boolean hasSystemWindowInsets();
    method public boolean hasWindowDecorInsets();
    method public boolean isRound();
  }
  public abstract interface WindowManager implements android.view.ViewManager {
+8 −6
Original line number Diff line number Diff line
@@ -1171,6 +1171,11 @@ public final class ViewRootImpl implements ViewParent,
        m.preTranslate(-attachInfo.mWindowLeft, -attachInfo.mWindowTop);
    }

    void dispatchApplyInsets(View host) {
        mFitSystemWindowsInsets.set(mAttachInfo.mContentInsets);
        host.dispatchApplyWindowInsets(new WindowInsets(mFitSystemWindowsInsets));
    }

    private void performTraversals() {
        // cache mView since it is used so much below...
        final View host = mView;
@@ -1257,8 +1262,7 @@ public final class ViewRootImpl implements ViewParent,
            }
            host.dispatchAttachedToWindow(attachInfo, 0);
            attachInfo.mTreeObserver.dispatchOnWindowAttachedChange(true);
            mFitSystemWindowsInsets.set(mAttachInfo.mContentInsets);
            host.fitSystemWindows(mFitSystemWindowsInsets);
            dispatchApplyInsets(host);
            //Log.i(TAG, "Screen on initialized: " + attachInfo.mKeepScreenOn);

        } else {
@@ -1383,9 +1387,8 @@ public final class ViewRootImpl implements ViewParent,

        if (mFitSystemWindowsRequested) {
            mFitSystemWindowsRequested = false;
            mFitSystemWindowsInsets.set(mAttachInfo.mContentInsets);
            mLastOverscanRequested = mAttachInfo.mOverscanRequested;
            host.fitSystemWindows(mFitSystemWindowsInsets);
            dispatchApplyInsets(host);
            if (mLayoutRequested) {
                // Short-circuit catching a new layout request here, so
                // we don't need to go through two layout passes when things
@@ -1559,8 +1562,7 @@ public final class ViewRootImpl implements ViewParent,
                    mLastSystemUiVisibility = mAttachInfo.mSystemUiVisibility;
                    mLastOverscanRequested = mAttachInfo.mOverscanRequested;
                    mFitSystemWindowsRequested = false;
                    mFitSystemWindowsInsets.set(mAttachInfo.mContentInsets);
                    host.fitSystemWindows(mFitSystemWindowsInsets);
                    dispatchApplyInsets(host);
                }
                if (visibleInsetsChanged) {
                    mAttachInfo.mVisibleInsets.set(mPendingVisibleInsets);
+24 −3
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ public class WindowInsets {
    private Rect mSystemWindowInsets;
    private Rect mWindowDecorInsets;
    private Rect mTempRect;
    private boolean mIsRound;

    private static final Rect EMPTY_RECT = new Rect(0, 0, 0, 0);

@@ -46,8 +47,14 @@ public class WindowInsets {

    /** @hide */
    public WindowInsets(Rect systemWindowInsets, Rect windowDecorInsets) {
        this(systemWindowInsets, windowDecorInsets, false);
    }

    /** @hide */
    public WindowInsets(Rect systemWindowInsets, Rect windowDecorInsets, boolean isRound) {
        mSystemWindowInsets = systemWindowInsets;
        mWindowDecorInsets = windowDecorInsets;
        mIsRound = isRound;
    }

    /**
@@ -58,12 +65,12 @@ public class WindowInsets {
    public WindowInsets(WindowInsets src) {
        mSystemWindowInsets = src.mSystemWindowInsets;
        mWindowDecorInsets = src.mWindowDecorInsets;
        mIsRound = src.mIsRound;
    }

    /** @hide */
    public WindowInsets(Rect systemWindowInsets) {
        mSystemWindowInsets = systemWindowInsets;
        mWindowDecorInsets = EMPTY_RECT;
        this(systemWindowInsets, EMPTY_RECT);
    }

    /**
@@ -220,6 +227,20 @@ public class WindowInsets {
        return hasSystemWindowInsets() || hasWindowDecorInsets();
    }

    /**
     * Returns true if the associated window has a round shape.
     *
     * <p>A round window's left, top, right and bottom edges reach all the way to the
     * associated edges of the window but the corners may not be visible. Views responding
     * to round insets should take care to not lay out critical elements within the corners
     * where they may not be accessible.</p>
     *
     * @return True if the window is round
     */
    public boolean isRound() {
        return mIsRound;
    }

    public WindowInsets cloneWithSystemWindowInsetsConsumed() {
        final WindowInsets result = new WindowInsets(this);
        result.mSystemWindowInsets = new Rect(0, 0, 0, 0);
@@ -273,6 +294,6 @@ public class WindowInsets {
    @Override
    public String toString() {
        return "WindowInsets{systemWindowInsets=" + mSystemWindowInsets + " windowDecorInsets=" +
                mWindowDecorInsets + "}";
                mWindowDecorInsets + (isRound() ? "round}" : "}");
    }
}