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

Commit 2d0f86d9 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "During accessible drag, hover events were not properly getting...

Merge "During accessible drag, hover events were not properly getting dispatched to the DragAndDropAccessibilityDelegate" into rvc-dev am: 0538863c

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/12010483

Change-Id: I461c245fdbe477be0fe223d77147690e4a636d10
parents 99296736 0538863c
Loading
Loading
Loading
Loading
+14 −7
Original line number Diff line number Diff line
@@ -182,7 +182,7 @@ public class CellLayout extends ViewGroup {
    private static final Paint sPaint = new Paint();

    // Related to accessible drag and drop
    private boolean mUseTouchHelper = false;
    DragAndDropAccessibilityDelegate mTouchHelper;

    public CellLayout(Context context) {
        this(context, null);
@@ -290,17 +290,15 @@ public class CellLayout extends ViewGroup {
        addView(mShortcutsAndWidgets);
    }


    /**
     * Sets or clears a delegate used for accessible drag and drop
     */
    public void setDragAndDropAccessibilityDelegate(DragAndDropAccessibilityDelegate delegate) {
        setOnClickListener(delegate);
        setOnHoverListener(delegate);
        ViewCompat.setAccessibilityDelegate(this, delegate);

        mUseTouchHelper = delegate != null;
        int accessibilityFlag = mUseTouchHelper
        mTouchHelper = delegate;
        int accessibilityFlag = mTouchHelper != null
                ? IMPORTANT_FOR_ACCESSIBILITY_YES : IMPORTANT_FOR_ACCESSIBILITY_NO;
        setImportantForAccessibility(accessibilityFlag);
        getShortcutsAndWidgets().setImportantForAccessibility(accessibilityFlag);
@@ -312,10 +310,19 @@ public class CellLayout extends ViewGroup {
        }
    }

    @Override
    public boolean dispatchHoverEvent(MotionEvent event) {
        // Always attempt to dispatch hover events to accessibility first.
        if (mTouchHelper != null && mTouchHelper.dispatchHoverEvent(event)) {
            return true;
        }
        return super.dispatchHoverEvent(event);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if (mUseTouchHelper ||
                (mInterceptTouchListener != null && mInterceptTouchListener.onTouch(this, ev))) {
        if (mTouchHelper != null
                || (mInterceptTouchListener != null && mInterceptTouchListener.onTouch(this, ev))) {
            return true;
        }
        return false;