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

Commit 49b0ea6f authored by Mateusz Cicheński's avatar Mateusz Cicheński
Browse files

Don't move PiP if keyguard is showing or animating.

Without this there will be a PiP window shadow lingering around on the
screen, which looks like menu overlay, but it's actually the shadow.

Similar precaution is already implemented in the shelf height change
callback, so this is further adding the same logic to other places
that trigger movement, with or without keep clear areas flag.

Bug: 269402344
Test: manually, move PiP to the bottom, enter keyguard - no shadow

Change-Id: Id2b69c98c6a9d6afdc10d8f601c3e38a063084d0
parent b1a1dc4d
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -161,6 +161,10 @@ public class PipController implements PipTransitionController.PipTransitionCallb
            this::onKeepClearAreasChangedCallback;

    private void onKeepClearAreasChangedCallback() {
        if (mIsKeyguardShowingOrAnimating) {
            // early bail out if the change was caused by keyguard showing up
            return;
        }
        if (!mEnablePipKeepClearAlgorithm) {
            // early bail out if the keep clear areas feature is disabled
            return;
@@ -186,6 +190,10 @@ public class PipController implements PipTransitionController.PipTransitionCallb
            // early bail out if the keep clear areas feature is disabled
            return;
        }
        if (mIsKeyguardShowingOrAnimating) {
            // early bail out if the change was caused by keyguard showing up
            return;
        }
        // only move if we're in PiP or transitioning into PiP
        if (!mPipTransitionState.shouldBlockResizeRequest()) {
            Rect destBounds = mPipKeepClearAlgorithm.adjust(mPipBoundsState,
@@ -635,9 +643,11 @@ public class PipController implements PipTransitionController.PipTransitionCallb
                        DisplayLayout pendingLayout =
                                mDisplayController.getDisplayLayout(mPipBoundsState.getDisplayId());
                        if (mIsInFixedRotation
                                || mIsKeyguardShowingOrAnimating
                                || pendingLayout.rotation()
                                != mPipBoundsState.getDisplayLayout().rotation()) {
                            // bail out if there is a pending rotation or fixed rotation change
                            // bail out if there is a pending rotation or fixed rotation change or
                            // there's a keyguard present
                            return;
                        }
                        int oldMaxMovementBound = mPipBoundsState.getMovementBounds().bottom;
@@ -931,10 +941,10 @@ public class PipController implements PipTransitionController.PipTransitionCallb
                    mPipBoundsState.getDisplayBounds().right,
                    mPipBoundsState.getDisplayBounds().bottom);
            mPipBoundsState.addNamedUnrestrictedKeepClearArea(LAUNCHER_KEEP_CLEAR_AREA_TAG, rect);
            updatePipPositionForKeepClearAreas();
        } else {
            mPipBoundsState.removeNamedUnrestrictedKeepClearArea(LAUNCHER_KEEP_CLEAR_AREA_TAG);
        }
        updatePipPositionForKeepClearAreas();
    }

    private void setLauncherAppIconSize(int iconSizePx) {