diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-06-26 22:14:49 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-06-26 22:14:49 +0000 |
commit | e55acad812a922ff577b54f3584102788046583d (patch) | |
tree | 62f8fdc7302d394ef5e755dec92aa413a6eb91de | |
parent | fdee930dbf550a11427f3c4d1bc121a0a8924011 (diff) | |
parent | 0538863c585a9632816db58de072c6aed80e9073 (diff) | |
download | Launcher3-e55acad812a922ff577b54f3584102788046583d.tar.gz |
Merge "During accessible drag, hover events were not properly getting dispatched to the DragAndDropAccessibilityDelegate" into rvc-dev am: 0538863c58
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/12010483
Change-Id: Id0c50d7e67452dcee46a43f8c6656f0b7ae54947
-rw-r--r-- | src/com/android/launcher3/CellLayout.java | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java index ed71ddc3b7..89d768c302 100644 --- a/src/com/android/launcher3/CellLayout.java +++ b/src/com/android/launcher3/CellLayout.java @@ -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); @@ -313,9 +311,18 @@ 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; |