Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62292698 authored by Miranda Kephart's avatar Miranda Kephart Committed by Android (Google) Code Review
Browse files

Merge "Don't allow screenshot swipe-dismiss on gesture-back regions"

parents 4046e185 7bbe9684
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -263,22 +263,29 @@ public class ScreenshotView extends FrameLayout implements
        inoutInfo.touchableRegion.set(getTouchRegion(true));
    }

    private Region getTouchRegion(boolean includeScrim) {
        Region touchRegion = new Region();
    private Region getSwipeRegion() {
        Region swipeRegion = new Region();

        final Rect tmpRect = new Rect();
        mScreenshotPreview.getBoundsOnScreen(tmpRect);
        tmpRect.inset((int) FloatingWindowUtil.dpToPx(mDisplayMetrics, -SWIPE_PADDING_DP),
                (int) FloatingWindowUtil.dpToPx(mDisplayMetrics, -SWIPE_PADDING_DP));
        touchRegion.op(tmpRect, Region.Op.UNION);
        swipeRegion.op(tmpRect, Region.Op.UNION);
        mActionsContainerBackground.getBoundsOnScreen(tmpRect);
        tmpRect.inset((int) FloatingWindowUtil.dpToPx(mDisplayMetrics, -SWIPE_PADDING_DP),
                (int) FloatingWindowUtil.dpToPx(mDisplayMetrics, -SWIPE_PADDING_DP));
        touchRegion.op(tmpRect, Region.Op.UNION);
        swipeRegion.op(tmpRect, Region.Op.UNION);
        mDismissButton.getBoundsOnScreen(tmpRect);
        touchRegion.op(tmpRect, Region.Op.UNION);
        swipeRegion.op(tmpRect, Region.Op.UNION);

        return swipeRegion;
    }

    private Region getTouchRegion(boolean includeScrim) {
        Region touchRegion = getSwipeRegion();

        if (includeScrim && mScrollingScrim.getVisibility() == View.VISIBLE) {
            final Rect tmpRect = new Rect();
            mScrollingScrim.getBoundsOnScreen(tmpRect);
            touchRegion.op(tmpRect, Region.Op.UNION);
        }
@@ -328,7 +335,7 @@ public class ScreenshotView extends FrameLayout implements
    @Override // ViewGroup
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        // scrolling scrim should not be swipeable; return early if we're on the scrim
        if (!getTouchRegion(false).contains((int) ev.getRawX(), (int) ev.getRawY())) {
        if (!getSwipeRegion().contains((int) ev.getRawX(), (int) ev.getRawY())) {
            return false;
        }
        // always pass through the down event so the swipe handler knows the initial state