From 9b9e046d68122d6e406e0e71b4de4c2ec20b0b95 Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Wed, 27 Mar 2024 22:50:58 +0100 Subject: [PATCH] implement View.getLocationInWindow() and MotionEvent.offsetLocation() This is needed for NestedScrollViews to detect and correct parent scroll offset --- src/api-impl/android/view/MotionEvent.java | 6 +++++- src/api-impl/android/view/View.java | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/api-impl/android/view/MotionEvent.java b/src/api-impl/android/view/MotionEvent.java index f69444af..bb9ec71c 100644 --- a/src/api-impl/android/view/MotionEvent.java +++ b/src/api-impl/android/view/MotionEvent.java @@ -1636,6 +1636,8 @@ public final class MotionEvent extends InputEvent { ev.action = other.action; ev.coord_x = other.coord_x; ev.coord_y = other.coord_y; + ev.raw_x = other.raw_x; + ev.raw_y = other.raw_y; return ev; } @@ -2731,7 +2733,9 @@ public final class MotionEvent extends InputEvent { */ public final void offsetLocation(float deltaX, float deltaY) { if (deltaX != 0.0f || deltaY != 0.0f) { - nativeOffsetLocation(mNativePtr, deltaX, deltaY); + // nativeOffsetLocation(mNativePtr, deltaX, deltaY); + this.coord_x += deltaX; + this.coord_y += deltaY; } } diff --git a/src/api-impl/android/view/View.java b/src/api-impl/android/view/View.java index 62511085..7ac7d3a5 100644 --- a/src/api-impl/android/view/View.java +++ b/src/api-impl/android/view/View.java @@ -1115,7 +1115,9 @@ public class View extends Object { return new IBinder(); } - public void getLocationInWindow(int[] xxx) {} + public void getLocationInWindow(int[] location) { + getLocationOnScreen(location); + } public void addOnAttachStateChangeListener(OnAttachStateChangeListener l) {}