diff options
| author | 2021-06-02 02:53:06 +0000 | |
|---|---|---|
| committer | 2021-06-02 02:53:06 +0000 | |
| commit | 9cc5e58c985342c46a9d91e65ccb6490bcfa00c9 (patch) | |
| tree | 0a10178f9ac894af5c57f8dda277d1702d271293 | |
| parent | 01a10d6a648b2c8e0eed7c905872d2426d5e9efa (diff) | |
| parent | b5aac103c82f6caa17aad2f8ca8627d599001719 (diff) | |
Merge "Adjusts the draggable bounds with the display cutcout" into sc-dev
2 files changed, 26 insertions, 10 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java b/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java index 964b135d7b50..99cf095ef61d 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java @@ -18,6 +18,7 @@ package com.android.systemui.accessibility; import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_NONE; import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW; +import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; import android.annotation.NonNull; import android.annotation.UiContext; @@ -36,6 +37,7 @@ import android.view.View; import android.view.WindowInsets; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; +import android.view.WindowMetrics; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; @@ -362,21 +364,21 @@ class MagnificationModeSwitch implements MagnificationGestureDetector.OnGestureL PixelFormat.TRANSPARENT); params.gravity = Gravity.TOP | Gravity.LEFT; params.accessibilityTitle = getAccessibilityWindowTitle(context); + params.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; return params; } private Rect getDraggableWindowBounds() { final int layoutMargin = mContext.getResources().getDimensionPixelSize( R.dimen.magnification_switch_button_margin); - final Rect boundRect = new Rect(mWindowManager.getCurrentWindowMetrics().getBounds()); - final Insets systemBars = - mWindowManager.getCurrentWindowMetrics().getWindowInsets() - .getInsetsIgnoringVisibility(WindowInsets.Type.systemBars()); - final Rect insets = new Rect(layoutMargin, - systemBars.top + layoutMargin, - mParams.width + layoutMargin, - mParams.height + layoutMargin + systemBars.bottom); - boundRect.inset(insets); + final WindowMetrics windowMetrics = mWindowManager.getCurrentWindowMetrics(); + final Insets windowInsets = windowMetrics.getWindowInsets().getInsetsIgnoringVisibility( + WindowInsets.Type.systemBars() | WindowInsets.Type.displayCutout()); + final Rect boundRect = new Rect(windowMetrics.getBounds()); + boundRect.offsetTo(0, 0); + boundRect.inset(0, 0, mParams.width, mParams.height); + boundRect.inset(windowInsets); + boundRect.inset(layoutMargin, layoutMargin); return boundRect; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java index d18997438d59..ab5bdf4835da 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java @@ -22,6 +22,7 @@ import static android.view.MotionEvent.ACTION_CANCEL; import static android.view.MotionEvent.ACTION_DOWN; import static android.view.MotionEvent.ACTION_MOVE; import static android.view.MotionEvent.ACTION_UP; +import static android.view.WindowInsets.Type.displayCutout; import static android.view.WindowInsets.Type.systemBars; import static android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction.ACTION_CLICK; @@ -225,7 +226,7 @@ public class MagnificationModeSwitchTest extends SysuiTestCase { } @Test - public void onApplyWindowInsetsWithWindowInsetsChange_buttonIsShowing_draggableBoundsChanged() { + public void onSystemBarsInsetsChanged_buttonIsShowing_draggableBoundsChanged() { mMagnificationModeSwitch.showButton(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN); final Rect oldDraggableBounds = new Rect(mMagnificationModeSwitch.mDraggableWindowBounds); @@ -238,6 +239,19 @@ public class MagnificationModeSwitchTest extends SysuiTestCase { } @Test + public void onDisplayCutoutInsetsChanged_buttonIsShowing_draggableBoundsChanged() { + mMagnificationModeSwitch.showButton(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN); + final Rect oldDraggableBounds = new Rect(mMagnificationModeSwitch.mDraggableWindowBounds); + + mWindowManager.setWindowInsets(new WindowInsets.Builder() + .setInsetsIgnoringVisibility(displayCutout(), Insets.of(20, 30, 20, 30)) + .build()); + mSpyImageView.onApplyWindowInsets(WindowInsets.CONSUMED); + + assertNotEquals(oldDraggableBounds, mMagnificationModeSwitch.mDraggableWindowBounds); + } + + @Test public void onDraggingGestureFinish_buttonIsShowing_stickToRightEdge() { final int windowHalfWidth = mWindowManager.getCurrentWindowMetrics().getBounds().width() / 2; |