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

Commit 67aa2999 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 am: 458fef86

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

Change-Id: I437a2a685e8f5a01cacc80391cc5e1dcb292dcf6
parents 39e1af9a 458fef86
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;