diff options
| author | 2023-10-10 00:14:31 +0000 | |
|---|---|---|
| committer | 2023-10-10 00:14:31 +0000 | |
| commit | a36355c79a9537f8464138833620d820f227bb51 (patch) | |
| tree | 2b0746f0da23f277cbc3db76272ee7e00acba20f | |
| parent | 3d2b2c63ea014881524b1a970655dbcc2c927c6b (diff) | |
| parent | c48014ff4ea609325f92c9912880914883188c18 (diff) | |
Merge "ViewGroup: Fix dispatching of generic motion events" into main am: c48014ff4e
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2779988
Change-Id: Ic87a3f2fcb339a01b7434fe676c48a19e31d0276
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | core/java/android/view/ViewGroup.java | 2 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/view/ViewGroupTest.java | 19 |
2 files changed, 15 insertions, 6 deletions
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 0d0bfe3b8ab9..d70296353ff6 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -2536,7 +2536,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager final int childrenCount = mChildrenCount; if (childrenCount != 0) { final float x = event.getXDispatchLocation(0); - final float y = event.getXDispatchLocation(0); + final float y = event.getYDispatchLocation(0); final ArrayList<View> preorderedList = buildOrderedChildList(); final boolean customOrder = preorderedList == null diff --git a/core/tests/coretests/src/android/view/ViewGroupTest.java b/core/tests/coretests/src/android/view/ViewGroupTest.java index b37c8fd8c34e..bce3f3e8f2e1 100644 --- a/core/tests/coretests/src/android/view/ViewGroupTest.java +++ b/core/tests/coretests/src/android/view/ViewGroupTest.java @@ -49,11 +49,11 @@ public class ViewGroupTest { public void testDispatchMouseEventsUnderCursor() { final Context context = getInstrumentation().getContext(); final TestView viewGroup = new TestView(context, 0 /* left */, 0 /* top */, - 200 /* right */, 200 /* bottom */); + 200 /* right */, 100 /* bottom */); final TestView viewA = spy(new TestView(context, 0 /* left */, 0 /* top */, - 100 /* right */, 200 /* bottom */)); + 100 /* right */, 100 /* bottom */)); final TestView viewB = spy(new TestView(context, 100 /* left */, 0 /* top */, - 200 /* right */, 200 /* bottom */)); + 200 /* right */, 100 /* bottom */)); viewGroup.addView(viewA); viewGroup.addView(viewB); @@ -73,10 +73,10 @@ public class ViewGroupTest { MotionEvent.PointerCoords[] coords = new MotionEvent.PointerCoords[2]; coords[0] = new MotionEvent.PointerCoords(); coords[0].x = 80; - coords[0].y = 100; + coords[0].y = 50; coords[1] = new MotionEvent.PointerCoords(); coords[1].x = 240; - coords[1].y = 100; + coords[1].y = 50; MotionEvent event; // Make sure the down event is active with a pointer which coordinate is different from the @@ -91,6 +91,10 @@ public class ViewGroupTest { viewGroup.onResolvePointerIcon(event, 0 /* pointerIndex */); verify(viewB).onResolvePointerIcon(event, 0); + event.setAction(MotionEvent.ACTION_SCROLL); + viewGroup.dispatchGenericMotionEvent(event); + verify(viewB).dispatchGenericMotionEvent(event); + event = MotionEvent.obtain(0 /* downTime */, 0 /* eventTime */, MotionEvent.ACTION_POINTER_DOWN | (1 << MotionEvent.ACTION_POINTER_INDEX_SHIFT), 2 /* pointerCount */, properties, coords, 0 /* metaState */, 0 /* buttonState */, @@ -102,8 +106,13 @@ public class ViewGroupTest { viewGroup.onResolvePointerIcon(event, 1 /* pointerIndex */); verify(viewB).onResolvePointerIcon(event, 1); + event.setAction(MotionEvent.ACTION_SCROLL); + viewGroup.dispatchGenericMotionEvent(event); + verify(viewB).dispatchGenericMotionEvent(event); + verify(viewA, never()).dispatchTouchEvent(any()); verify(viewA, never()).onResolvePointerIcon(any(), anyInt()); + verify(viewA, never()).dispatchGenericMotionEvent(any()); } /** |