Merge "Fix NotificaitonPanelView x-axis shift with IME" into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
1b65af27d8
@@ -178,11 +178,7 @@ public class HeadsUpStatusBarView extends AlphaOptimizedLinearLayout {
|
||||
* @param translationX how to translate the horizontal position
|
||||
*/
|
||||
public void setPanelTranslation(float translationX) {
|
||||
if (isLayoutRtl()) {
|
||||
setTranslationX(translationX + mCutOutInset);
|
||||
} else {
|
||||
setTranslationX(translationX - mCutOutInset);
|
||||
}
|
||||
setTranslationX(translationX);
|
||||
updateDrawingRect();
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.phone;
|
||||
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.view.DisplayCutout;
|
||||
import android.view.View;
|
||||
import android.view.WindowInsets;
|
||||
|
||||
@@ -159,8 +160,15 @@ public class HeadsUpAppearanceController implements OnHeadsUpChangedListener,
|
||||
}
|
||||
|
||||
WindowInsets windowInset = mStackScroller.getRootWindowInsets();
|
||||
return windowInset.getSystemWindowInsetLeft() + mStackScroller.getRight()
|
||||
+ windowInset.getSystemWindowInsetRight() - realDisplaySize;
|
||||
DisplayCutout cutout = (windowInset != null) ? windowInset.getDisplayCutout() : null;
|
||||
int sysWinLeft = (windowInset != null) ? windowInset.getStableInsetLeft() : 0;
|
||||
int sysWinRight = (windowInset != null) ? windowInset.getStableInsetRight() : 0;
|
||||
int cutoutLeft = (cutout != null) ? cutout.getSafeInsetLeft() : 0;
|
||||
int cutoutRight = (cutout != null) ? cutout.getSafeInsetRight() : 0;
|
||||
int leftInset = Math.max(sysWinLeft, cutoutLeft);
|
||||
int rightInset = Math.max(sysWinRight, cutoutRight);
|
||||
|
||||
return leftInset + mStackScroller.getRight() + rightInset - realDisplaySize;
|
||||
}
|
||||
|
||||
public void updatePanelTranslation() {
|
||||
|
||||
@@ -331,30 +331,25 @@ public class PhoneStatusBarView extends PanelBar {
|
||||
// or letterboxing from the right or left sides.
|
||||
|
||||
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) getLayoutParams();
|
||||
if (mDisplayCutout == null) {
|
||||
if (mDisplayCutout == null || mDisplayCutout.isEmpty()
|
||||
|| mLastOrientation != ORIENTATION_PORTRAIT || cornerCutoutMargins == null) {
|
||||
lp.leftMargin = 0;
|
||||
lp.rightMargin = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
lp.leftMargin = mDisplayCutout.getSafeInsetLeft();
|
||||
lp.rightMargin = mDisplayCutout.getSafeInsetRight();
|
||||
|
||||
if (cornerCutoutMargins != null) {
|
||||
lp.leftMargin = Math.max(lp.leftMargin, cornerCutoutMargins.first);
|
||||
lp.rightMargin = Math.max(lp.rightMargin, cornerCutoutMargins.second);
|
||||
|
||||
// If we're already inset enough (e.g. on the status bar side), we can have 0 margin
|
||||
WindowInsets insets = getRootWindowInsets();
|
||||
int leftInset = insets.getSystemWindowInsetLeft();
|
||||
int rightInset = insets.getSystemWindowInsetRight();
|
||||
if (lp.leftMargin <= leftInset) {
|
||||
lp.leftMargin = 0;
|
||||
}
|
||||
if (lp.rightMargin <= rightInset) {
|
||||
lp.rightMargin = 0;
|
||||
}
|
||||
lp.leftMargin = Math.max(lp.leftMargin, cornerCutoutMargins.first);
|
||||
lp.rightMargin = Math.max(lp.rightMargin, cornerCutoutMargins.second);
|
||||
|
||||
// If we're already inset enough (e.g. on the status bar side), we can have 0 margin
|
||||
WindowInsets insets = getRootWindowInsets();
|
||||
int leftInset = insets.getSystemWindowInsetLeft();
|
||||
int rightInset = insets.getSystemWindowInsetRight();
|
||||
if (lp.leftMargin <= leftInset) {
|
||||
lp.leftMargin = 0;
|
||||
}
|
||||
if (lp.rightMargin <= rightInset) {
|
||||
lp.rightMargin = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ import android.os.IBinder;
|
||||
import android.os.SystemClock;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.ActionMode;
|
||||
import android.view.DisplayCutout;
|
||||
import android.view.InputDevice;
|
||||
import android.view.InputQueue;
|
||||
import android.view.KeyEvent;
|
||||
@@ -118,10 +119,21 @@ public class StatusBarWindowView extends FrameLayout {
|
||||
boolean paddingChanged = insets.top != getPaddingTop()
|
||||
|| insets.bottom != getPaddingBottom();
|
||||
|
||||
int rightCutout = 0;
|
||||
int leftCutout = 0;
|
||||
DisplayCutout displayCutout = getRootWindowInsets().getDisplayCutout();
|
||||
if (displayCutout != null) {
|
||||
leftCutout = displayCutout.getSafeInsetLeft();
|
||||
rightCutout = displayCutout.getSafeInsetRight();
|
||||
}
|
||||
|
||||
int targetLeft = Math.max(insets.left, leftCutout);
|
||||
int targetRight = Math.max(insets.right, rightCutout);
|
||||
|
||||
// Super-special right inset handling, because scrims and backdrop need to ignore it.
|
||||
if (insets.right != mRightInset || insets.left != mLeftInset) {
|
||||
mRightInset = insets.right;
|
||||
mLeftInset = insets.left;
|
||||
if (targetRight != mRightInset || targetLeft != mLeftInset) {
|
||||
mRightInset = targetRight;
|
||||
mLeftInset = targetLeft;
|
||||
applyMargins();
|
||||
}
|
||||
// Drop top inset, and pass through bottom inset.
|
||||
|
||||
Reference in New Issue
Block a user