From bf770d72cffd5c1e74007fe792a9042267e3c066 Mon Sep 17 00:00:00 2001 From: Tracy Zhou Date: Tue, 29 May 2018 15:36:16 -0700 Subject: [PATCH] Fix unwanted PIP window dismissal when moving to the bottom Display#getSize() returns screen size excluding certain system decor elements. We should get a more accurate size using Display#getRealSize() minus bottom inset instead for calculating whether the PIP window should be dismissed. Fixes: 80367557 Test: atest CtsActivityManagerDeviceTestCases:ActivityManagerPinnedStackTests and manual test Change-Id: I20cd8ccfa53bd7cc1cb7176280a01dbcb64b5745 --- .../com/android/systemui/pip/phone/PipMotionHelper.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java index 31d8cbb5d19da..ad841308cb0de 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java @@ -225,9 +225,10 @@ public class PipMotionHelper implements Handler.Callback { */ boolean shouldDismissPip() { Point displaySize = new Point(); - mContext.getDisplay().getSize(displaySize); - if (mBounds.bottom > displaySize.y) { - float offscreenFraction = (float) (mBounds.bottom - displaySize.y) / mBounds.height(); + mContext.getDisplay().getRealSize(displaySize); + final int y = displaySize.y - mStableInsets.bottom; + if (mBounds.bottom > y) { + float offscreenFraction = (float) (mBounds.bottom - y) / mBounds.height(); return offscreenFraction >= DISMISS_OFFSCREEN_FRACTION; } return false;