Merge "Use a Region when calculating TouchableRegion for cutouts" into qt-dev

This commit is contained in:
TreeHugger Robot
2019-07-11 06:33:20 +00:00
committed by Android (Google) Code Review
2 changed files with 11 additions and 5 deletions

View File

@@ -22,6 +22,7 @@ import android.content.Context;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Rect; import android.graphics.Rect;
import android.graphics.Region;
import android.util.Log; import android.util.Log;
import android.util.Pools; import android.util.Pools;
import android.view.DisplayCutout; import android.view.DisplayCutout;
@@ -76,7 +77,7 @@ public class HeadsUpManagerPhone extends HeadsUpManager implements Dumpable,
private int[] mTmpTwoArray = new int[2]; private int[] mTmpTwoArray = new int[2];
private boolean mHeadsUpGoingAway; private boolean mHeadsUpGoingAway;
private int mStatusBarState; private int mStatusBarState;
private Rect mTouchableRegion = new Rect(); private Region mTouchableRegion = new Region();
private AnimationStateHandler mAnimationStateHandler; private AnimationStateHandler mAnimationStateHandler;
@@ -299,10 +300,11 @@ public class HeadsUpManagerPhone extends HeadsUpManager implements Dumpable,
info.touchableRegion.set(calculateTouchableRegion()); info.touchableRegion.set(calculateTouchableRegion());
} }
public Rect calculateTouchableRegion() { public Region calculateTouchableRegion() {
if (!hasPinnedHeadsUp()) { if (!hasPinnedHeadsUp()) {
mTouchableRegion.set(0, 0, mStatusBarWindowView.getWidth(), mStatusBarHeight); mTouchableRegion.set(0, 0, mStatusBarWindowView.getWidth(), mStatusBarHeight);
updateRegionForNotch(mTouchableRegion); updateRegionForNotch(mTouchableRegion);
} else { } else {
NotificationEntry topEntry = getTopEntry(); NotificationEntry topEntry = getTopEntry();
if (topEntry.isChildInGroup()) { if (topEntry.isChildInGroup()) {
@@ -322,7 +324,7 @@ public class HeadsUpManagerPhone extends HeadsUpManager implements Dumpable,
return mTouchableRegion; return mTouchableRegion;
} }
private void updateRegionForNotch(Rect region) { private void updateRegionForNotch(Region region) {
DisplayCutout cutout = mStatusBarWindowView.getRootWindowInsets().getDisplayCutout(); DisplayCutout cutout = mStatusBarWindowView.getRootWindowInsets().getDisplayCutout();
if (cutout == null) { if (cutout == null) {
return; return;
@@ -390,6 +392,8 @@ public class HeadsUpManagerPhone extends HeadsUpManager implements Dumpable,
super.dumpInternal(fd, pw, args); super.dumpInternal(fd, pw, args);
pw.print(" mBarState="); pw.print(" mBarState=");
pw.println(mStatusBarState); pw.println(mStatusBarState);
pw.print(" mTouchableRegion=");
pw.println(mTouchableRegion);
} }
/////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////

View File

@@ -38,6 +38,7 @@ import android.graphics.PointF;
import android.graphics.PorterDuff; import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode; import android.graphics.PorterDuffXfermode;
import android.graphics.Rect; import android.graphics.Rect;
import android.graphics.Region;
import android.os.PowerManager; import android.os.PowerManager;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log; import android.util.Log;
@@ -620,9 +621,10 @@ public class NotificationPanelView extends PanelView implements
private Rect calculateGestureExclusionRect() { private Rect calculateGestureExclusionRect() {
Rect exclusionRect = null; 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 // Note: The heads up manager also calculates the non-pinned touchable region
exclusionRect = mHeadsUpManager.calculateTouchableRegion(); exclusionRect = touchableRegion.getBounds();
} }
return exclusionRect != null return exclusionRect != null
? exclusionRect ? exclusionRect