OSDN Git Service

Allow TouchDelegate to forward non-primary pointer
authorSiarhei Vishniakou <svv@google.com>
Fri, 16 Feb 2018 23:27:22 +0000 (17:27 -0600)
committerSiarhei Vishniakou <svv@google.com>
Fri, 16 Feb 2018 23:43:20 +0000 (17:43 -0600)
Currently, TouchDelegate can be used to receive the primary pointer
events with actions ACTION_DOWN, ACTION_UP, and ACTION_MOVE. While
ACTION_MOVE will contain the data for all active pointers (not just
primary), currently TouchDelegate will not forward ACTION_POINTER_DOWN
and ACTION_POINTER_UP events.

This change modifies TouchDelegate behaviour to also forward the
non-primary pointer DOWN and UP events to the target view.

Bug: 37060799
Test: atest cts.TouchDelegateTest
Change-Id: Ieb457c9e15058302cb26d9d4a83f958bbec8dbc0

core/java/android/view/TouchDelegate.java

index dc50fa1..d6c43e8 100644 (file)
@@ -105,11 +105,13 @@ public class TouchDelegate {
         boolean hit = true;
         boolean handled = false;
 
-        switch (event.getAction()) {
+        switch (event.getActionMasked()) {
             case MotionEvent.ACTION_DOWN:
                 mDelegateTargeted = mBounds.contains(x, y);
                 sendToDelegate = mDelegateTargeted;
                 break;
+            case MotionEvent.ACTION_POINTER_DOWN:
+            case MotionEvent.ACTION_POINTER_UP:
             case MotionEvent.ACTION_UP:
             case MotionEvent.ACTION_MOVE:
                 sendToDelegate = mDelegateTargeted;