This repository was archived by the owner on Feb 25, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +27
-6
lines changed
Expand file tree Collapse file tree 2 files changed +27
-6
lines changed Original file line number Diff line number Diff line change @@ -153,7 +153,23 @@ class PointerData {
153153 }
154154}
155155
156+ /// A function used to notify the engine about how a [PointerDataPacket] was used in the framework.
157+ ///
158+ /// For example, can be used to [preventDefault] the source events on the web.
159+ typedef _PointerDataPacketAcknowledgeFn = void Function ({
160+ bool ? preventDefault,
161+ });
162+
163+ // The default _PointerDataPacketAcknowledgeFn, which is a noop.
164+ void _defaultPointerDataPacketAcknowledgeFn ({
165+ bool ? preventDefault,
166+ }) {}
167+
156168class PointerDataPacket {
157- const PointerDataPacket ({this .data = const < PointerData > []});
169+ const PointerDataPacket ({
170+ this .data = const < PointerData > [],
171+ this .acknowledge = _defaultPointerDataPacketAcknowledgeFn,
172+ });
158173 final List <PointerData > data;
174+ final _PointerDataPacketAcknowledgeFn acknowledge;
159175}
Original file line number Diff line number Diff line change @@ -403,7 +403,14 @@ class ClickDebouncer {
403403 }
404404
405405 void _sendToFramework (DomEvent ? event, List <ui.PointerData > data) {
406- final ui.PointerDataPacket packet = ui.PointerDataPacket (data: data.toList ());
406+ final ui.PointerDataPacket packet = ui.PointerDataPacket (
407+ data: data.toList (),
408+ acknowledge: ({bool ? preventDefault}) {
409+ if (preventDefault ?? false ) {
410+ event? .preventDefault ();
411+ }
412+ },
413+ );
407414 if (_debugLogFlutterEvents) {
408415 for (final ui.PointerData datum in data) {
409416 print ('fw:${datum .change } ${datum .physicalX },${datum .physicalY }' );
@@ -728,11 +735,9 @@ mixin _WheelEventListenerMixin on _BaseAdapter {
728735 if (_debugLogPointerEvents) {
729736 print (event.type);
730737 }
738+ // PointerData has a binding to the native `event` so users can choose to
739+ // prevent default (or not).
731740 _callback (e, _convertWheelEventToPointerData (event));
732- // Prevent default so mouse wheel event doesn't get converted to
733- // a scroll event that semantic nodes would process.
734- //
735- event.preventDefault ();
736741 }
737742
738743 /// For browsers that report delta line instead of pixels such as FireFox
You can’t perform that action at this time.
0 commit comments