Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 0cd7615

Browse files
committed
Guess at trackpad pans on web
1 parent f0f4e1d commit 0cd7615

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

lib/web_ui/lib/src/engine/pointer_binding.dart

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,12 @@ mixin _WheelEventListenerMixin on _BaseAdapter {
324324
const int domDeltaLine = 0x01;
325325
const int domDeltaPage = 0x02;
326326

327+
// Logic from https://stackoverflow.com/a/62415754
328+
ui.PointerDeviceKind kind = ui.PointerDeviceKind.mouse;
329+
if (event.deltaX % 120 != 0 || event.deltaY % 120 != 0) {
330+
kind = ui.PointerDeviceKind.trackpad;
331+
}
332+
327333
// Flutter only supports pixel scroll delta. Convert deltaMode values
328334
// to pixels.
329335
double deltaX = event.deltaX as double;
@@ -348,7 +354,7 @@ mixin _WheelEventListenerMixin on _BaseAdapter {
348354
data,
349355
change: ui.PointerChange.hover,
350356
timeStamp: _BaseAdapter._eventTimeStampToDuration(event.timeStamp!),
351-
kind: ui.PointerDeviceKind.mouse,
357+
kind: kind,
352358
signalKind: ui.PointerSignalKind.scroll,
353359
device: _mouseDeviceId,
354360
physicalX: event.clientX.toDouble() * ui.window.devicePixelRatio,

0 commit comments

Comments
 (0)