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

Commit 995270f0 authored by Adam Powell's avatar Adam Powell
Browse files

Keyguard - prevent slider intercept when we don't want it

Integrate from proto app

When calling code deliberately hides the slider, block drags of the
slider that may begin shortly after. This prevents the case where edge
dragging a widget can accidentally catch the slider instead.

Change-Id: I7e8e1ad4afbea0abeeb08161ddeb938c858fc4a5
parent b8a220cb
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -481,6 +481,7 @@ public class SlidingChallengeLayout extends ViewGroup implements ChallengeLayout
        switch (action) {
            case MotionEvent.ACTION_DOWN:
                mGestureStartY = ev.getY();
                mBlockDrag = false;
                break;

            case MotionEvent.ACTION_CANCEL:
@@ -533,6 +534,11 @@ public class SlidingChallengeLayout extends ViewGroup implements ChallengeLayout

        final int action = ev.getActionMasked();
        switch (action) {
            case MotionEvent.ACTION_DOWN:
                mBlockDrag = false;
                mGestureStartY = ev.getY();
                break;

            case MotionEvent.ACTION_CANCEL:
                if (mDragging) {
                    showChallenge(0);
@@ -855,19 +861,17 @@ public class SlidingChallengeLayout extends ViewGroup implements ChallengeLayout
        return mChallengeView.getBottom();
    }

    /**
     * The top edge of the challenge if it were fully opened.
     */
    private int getChallengeOpenedTop() {
        return getLayoutBottom() - ((mChallengeView == null) ? 0 : mChallengeView.getHeight());
    }

    /**
     * Show or hide the challenge view, animating it if necessary.
     * @param show true to show, false to hide
     */
    public void showChallenge(boolean show) {
        showChallenge(show, 0);
        if (!show) {
            // Block any drags in progress so that callers can use this to disable dragging
            // for other touch interactions.
            mBlockDrag = true;
        }
    }

    private void showChallenge(int velocity) {