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

Commit 5feb42a

Browse files
committed
Add method to instance.
1 parent 75d61bf commit 5feb42a

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

lib/web_ui/lib/pointer.dart

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff 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+
156168
class 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
}

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)