Merge "Use a Region when calculating TouchableRegion for cutouts" into qt-dev
am: 6c22dff644
Change-Id: If667a3e6d1b0904664e16c59c5760a17ff06361e
This commit is contained in:
@@ -22,6 +22,7 @@ import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.Region;
|
||||
import android.util.Log;
|
||||
import android.util.Pools;
|
||||
import android.view.DisplayCutout;
|
||||
@@ -88,7 +89,7 @@ public class HeadsUpManagerPhone extends HeadsUpManager implements Dumpable,
|
||||
private int[] mTmpTwoArray = new int[2];
|
||||
private boolean mHeadsUpGoingAway;
|
||||
private int mStatusBarState;
|
||||
private Rect mTouchableRegion = new Rect();
|
||||
private Region mTouchableRegion = new Region();
|
||||
|
||||
private AnimationStateHandler mAnimationStateHandler;
|
||||
|
||||
@@ -365,10 +366,11 @@ public class HeadsUpManagerPhone extends HeadsUpManager implements Dumpable,
|
||||
info.touchableRegion.set(calculateTouchableRegion());
|
||||
}
|
||||
|
||||
public Rect calculateTouchableRegion() {
|
||||
public Region calculateTouchableRegion() {
|
||||
if (!hasPinnedHeadsUp()) {
|
||||
mTouchableRegion.set(0, 0, mStatusBarWindowView.getWidth(), mStatusBarHeight);
|
||||
updateRegionForNotch(mTouchableRegion);
|
||||
|
||||
} else {
|
||||
NotificationEntry topEntry = getTopEntry();
|
||||
if (topEntry.isChildInGroup()) {
|
||||
@@ -388,7 +390,7 @@ public class HeadsUpManagerPhone extends HeadsUpManager implements Dumpable,
|
||||
return mTouchableRegion;
|
||||
}
|
||||
|
||||
private void updateRegionForNotch(Rect region) {
|
||||
private void updateRegionForNotch(Region region) {
|
||||
DisplayCutout cutout = mStatusBarWindowView.getRootWindowInsets().getDisplayCutout();
|
||||
if (cutout == null) {
|
||||
return;
|
||||
@@ -460,6 +462,8 @@ public class HeadsUpManagerPhone extends HeadsUpManager implements Dumpable,
|
||||
super.dumpInternal(fd, pw, args);
|
||||
pw.print(" mBarState=");
|
||||
pw.println(mStatusBarState);
|
||||
pw.print(" mTouchableRegion=");
|
||||
pw.println(mTouchableRegion);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -38,6 +38,7 @@ import android.graphics.PointF;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.PorterDuffXfermode;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.Region;
|
||||
import android.os.PowerManager;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
@@ -676,9 +677,10 @@ public class NotificationPanelView extends PanelView implements
|
||||
|
||||
private Rect calculateGestureExclusionRect() {
|
||||
Rect exclusionRect = null;
|
||||
if (isFullyCollapsed()) {
|
||||
Region touchableRegion = mHeadsUpManager.calculateTouchableRegion();
|
||||
if (isFullyCollapsed() && touchableRegion != null) {
|
||||
// Note: The heads up manager also calculates the non-pinned touchable region
|
||||
exclusionRect = mHeadsUpManager.calculateTouchableRegion();
|
||||
exclusionRect = touchableRegion.getBounds();
|
||||
}
|
||||
return exclusionRect != null
|
||||
? exclusionRect
|
||||
|
||||
Reference in New Issue
Block a user