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

Commit bd707492 authored by Mady Mellor's avatar Mady Mellor
Browse files

Check for false touches when determining if the notif menu should be shown

If it's a false touch don't show the menu.

Test: manual: try swiping things away on the lockscreen (fast + long)
     try showing notification menu on the lockscreen
Bug: 38208094

Change-Id: I16ceedd90a5fbc80156a9495d6cfd6fa02771886
parent e53243cb
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -49,6 +49,8 @@ public interface NotificationSwipeActionHelper {

    public boolean isDismissGesture(MotionEvent ev);

    public boolean isFalseGesture(MotionEvent ev);

    public boolean swipedFarEnough(float translation, float viewSize);

    public boolean swipedFastEnough(float translation, float velocity);
+7 −3
Original line number Diff line number Diff line
@@ -653,15 +653,19 @@ public class SwipeHelper implements Gefingerpoken {
    }

    public boolean isDismissGesture(MotionEvent ev) {
        return ev.getActionMasked() == MotionEvent.ACTION_UP
                && !isFalseGesture(ev) && (swipedFastEnough() || swipedFarEnough())
                && mCallback.canChildBeDismissed(mCurrView);
    }

    public boolean isFalseGesture(MotionEvent ev) {
        boolean falsingDetected = mCallback.isAntiFalsingNeeded();
        if (mFalsingManager.isClassiferEnabled()) {
            falsingDetected = falsingDetected && mFalsingManager.isFalseTouch();
        } else {
            falsingDetected = falsingDetected && !mTouchAboveFalsingThreshold;
        }
        return !falsingDetected && (swipedFastEnough() || swipedFarEnough())
                && ev.getActionMasked() == MotionEvent.ACTION_UP
                && mCallback.canChildBeDismissed(mCurrView);
        return falsingDetected;
    }

    protected boolean swipedFastEnough() {
+2 −1
Original line number Diff line number Diff line
@@ -330,7 +330,8 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl
            } else {
                snapBack(animView, velocity);
            }
        } else if ((swipedEnoughToShowMenu() && (!gestureFastEnough || showMenuForSlowOnGoing))
        } else if (!mSwipeHelper.isFalseGesture(ev)
                && (swipedEnoughToShowMenu() && (!gestureFastEnough || showMenuForSlowOnGoing))
                || (gestureTowardsMenu && !mSwipeHelper.isDismissGesture(ev))) {
            // Menu has not been snapped to previously and this is menu revealing gesture
            showMenu(animView, menuSnapTarget, velocity);
+4 −0
Original line number Diff line number Diff line
@@ -4351,6 +4351,10 @@ public class NotificationStackScrollLayout extends ViewGroup
            mStatusBar.setNotificationSnoozed(sbn, snoozeOption);
        }

        public boolean isFalseGesture(MotionEvent ev) {
            return super.isFalseGesture(ev);
        }

        private void handleMenuCoveredOrDismissed() {
            if (mMenuExposedView != null && mMenuExposedView == mTranslatingParentView) {
                mMenuExposedView = null;