Use getLocationOnScreen() to determine home bounds

This correctly accounts for device cutouts in landscape.

Bug: 76220728
Change-Id: I34f022d92957caeffae49b21a89acaf13e188076
This commit is contained in:
Tony Wickham
2018-06-05 08:36:44 -07:00
parent 87168ca1f7
commit 678be9b823

View File

@@ -589,7 +589,15 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
new Point(minimizedHomeBounds.width(), minimizedHomeBounds.height()));
dp.updateInsets(homeContentInsets);
} else {
overviewStackBounds = new Rect(0, 0, dp.widthPx, dp.heightPx);
if (mActivity != null) {
int loc[] = new int[2];
View rootView = mActivity.getRootView();
rootView.getLocationOnScreen(loc);
overviewStackBounds = new Rect(loc[0], loc[1], loc[0] + rootView.getWidth(),
loc[1] + rootView.getHeight());
} else {
overviewStackBounds = new Rect(0, 0, dp.widthPx, dp.heightPx);
}
// If we are not in multi-window mode, home insets should be same as system insets.
Rect insets = new Rect();
WindowManagerWrapper.getInstance().getStableInsets(insets);