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
This commit is contained in:
Mateusz Cicheński
2023-03-21 00:32:48 +00:00
parent b1a1dc4d3a
commit 49b0ea6fec

View File

@@ -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) {