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

Commit 60979932 authored by Ben Lin's avatar Ben Lin Committed by Android (Google) Code Review
Browse files

Merge "Crash fixes for Gesture selection in Picker mode." into nyc-andromeda-dev

parents c8f165c7 2d6caf33
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -23,4 +23,22 @@ package com.android.documentsui.base;
@FunctionalInterface
public interface EventHandler<T> {
    boolean accept(T event);

    public static <T> EventHandler<T> createStub(boolean reply) {
        return new Stub<T>(reply);
    }

    public static final class Stub<T> implements EventHandler<T> {

        private boolean mReply;

        private Stub(boolean reply) {
            mReply = reply;}

        @Override
        public boolean accept(T event) {
            return mReply;
        }

    }
}
 No newline at end of file
+5 −1
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ import com.android.documentsui.RecentsLoader;
import com.android.documentsui.Snackbars;
import com.android.documentsui.ThumbnailCache;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.EventHandler;
import com.android.documentsui.base.EventListener;
import com.android.documentsui.base.Events.InputEvent;
import com.android.documentsui.base.Events.MotionInputEvent;
@@ -318,6 +319,9 @@ public class DirectoryFragment extends Fragment
                        getContext().getDrawable(com.android.internal.R.drawable.ic_doc_generic))
                : DragStartListener.DUMMY;

        EventHandler<InputEvent> gestureHandler = state.allowMultiple
                ? gestureSel::start
                : EventHandler.createStub(false);
        mInputHandler = new UserInputHandler<>(
                mSelectionMgr,
                mFocusManager,
@@ -331,7 +335,7 @@ public class DirectoryFragment extends Fragment
                (DocumentDetails details) -> mTuner.onDocumentPicked(details.getModelId()),
                (DocumentDetails ignored) -> onDeleteSelectedDocuments(), // delete handler
                mDragStartListener::onTouchDragEvent,
                gestureSel::start);
                gestureHandler);

        new ListeningGestureDetector(
                this.getContext(),
+5 −1
Original line number Diff line number Diff line
@@ -279,7 +279,11 @@ public final class UserInputHandler<T extends InputEvent>
            } else {
                if (!mSelectionMgr.getSelection().contains(doc.getModelId())) {
                    selectDocument(doc);
                    // If we cannot select it, we didn't apply anchoring - therefore should not
                    // start gesture selection
                    if (mSelectable.test(doc)) {
                        mGestureSelectHandler.accept(event);
                    }
                } else {
                    // We only initiate drag and drop on long press for touch to allow regular
                    // touch-based scrolling