forked from firka/flutter
Encode scroll motion events in the Android touch processor (flutter/engine#8149)
This commit is contained in:
@@ -150,7 +150,9 @@ public class AndroidTouchProcessor {
|
||||
// Mouse hover support is not implemented for API < 18.
|
||||
boolean isPointerEvent = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2
|
||||
&& event.isFromSource(InputDevice.SOURCE_CLASS_POINTER);
|
||||
if (!isPointerEvent || event.getActionMasked() != MotionEvent.ACTION_HOVER_MOVE) {
|
||||
boolean isMovementEvent = (event.getActionMasked() == MotionEvent.ACTION_HOVER_MOVE
|
||||
|| event.getActionMasked() == MotionEvent.ACTION_SCROLL);
|
||||
if (!isPointerEvent || !isMovementEvent) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -181,7 +183,9 @@ public class AndroidTouchProcessor {
|
||||
|
||||
int pointerKind = getPointerDeviceTypeForToolType(event.getToolType(pointerIndex));
|
||||
|
||||
int signalKind = PointerSignalKind.NONE;
|
||||
int signalKind = event.getActionMasked() == MotionEvent.ACTION_SCROLL
|
||||
? PointerSignalKind.SCROLL
|
||||
: PointerSignalKind.NONE;
|
||||
|
||||
long timeStamp = event.getEventTime() * 1000; // Convert from milliseconds to microseconds.
|
||||
|
||||
@@ -242,8 +246,13 @@ public class AndroidTouchProcessor {
|
||||
|
||||
packet.putLong(pointerData); // platformData
|
||||
|
||||
packet.putDouble(0.0); // scroll_delta_x
|
||||
packet.putDouble(0.0); // scroll_delta_y
|
||||
if (signalKind == PointerSignalKind.SCROLL) {
|
||||
packet.putDouble(-event.getAxisValue(MotionEvent.AXIS_HSCROLL)); // scroll_delta_x
|
||||
packet.putDouble(-event.getAxisValue(MotionEvent.AXIS_VSCROLL)); // scroll_delta_y
|
||||
} else {
|
||||
packet.putDouble(0.0); // scroll_delta_x
|
||||
packet.putDouble(0.0); // scroll_delta_x
|
||||
}
|
||||
}
|
||||
|
||||
@PointerChange
|
||||
@@ -269,6 +278,9 @@ public class AndroidTouchProcessor {
|
||||
if (maskedAction == MotionEvent.ACTION_CANCEL) {
|
||||
return PointerChange.CANCEL;
|
||||
}
|
||||
if (maskedAction == MotionEvent.ACTION_SCROLL) {
|
||||
return PointerChange.HOVER;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user