diff options
| author | 2023-05-20 00:18:54 +0000 | |
|---|---|---|
| committer | 2023-05-20 00:18:54 +0000 | |
| commit | c1fac95c68cf55eb7d61bc5237922e3ff480d1cc (patch) | |
| tree | b44cacee71c7f0c625d02105691365984ac9249e | |
| parent | 27635e55ab336f07c508769e041c25271f44b69c (diff) | |
| parent | e0a81640e53063fb028db45d04d41d073ffd6bab (diff) | |
Merge "Make PiP move away to not occlude IME when it's too big" into udc-dev
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipKeepClearAlgorithm.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipKeepClearAlgorithm.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipKeepClearAlgorithm.java index ed8dc7ded654..fc674a8aa59b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipKeepClearAlgorithm.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipKeepClearAlgorithm.java @@ -65,9 +65,18 @@ public class PhonePipKeepClearAlgorithm implements PipKeepClearAlgorithmInterfac } Rect pipBounds = new Rect(startingBounds); - // move PiP towards corner if user hasn't moved it manually or the flag is on - if (mKeepClearAreaGravityEnabled - || (!pipBoundsState.hasUserMovedPip() && !pipBoundsState.hasUserResizedPip())) { + boolean shouldApplyGravity = false; + // if PiP is outside of screen insets, reposition using gravity + if (!insets.contains(pipBounds)) { + shouldApplyGravity = true; + } + // if user has not interacted with PiP, reposition using gravity + if (!pipBoundsState.hasUserMovedPip() && !pipBoundsState.hasUserResizedPip()) { + shouldApplyGravity = true; + } + + // apply gravity that will position PiP in bottom left or bottom right corner within insets + if (mKeepClearAreaGravityEnabled || shouldApplyGravity) { float snapFraction = pipBoundsAlgorithm.getSnapFraction(startingBounds); int verticalGravity = Gravity.BOTTOM; int horizontalGravity; |