Skip to content

Commit 3b153e9

Browse files
committed
use redispatch, check for stopped
1 parent 4f127c9 commit 3b153e9

File tree

3 files changed

+11
-9
lines changed

3 files changed

+11
-9
lines changed

src/browser/dom/event_target.zig

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -153,17 +153,12 @@ pub const EventTarget = struct {
153153

154154
// TODO: If we get this working, we should also create a getter to check
155155
// stopPropagation and not bubble to window if true.
156-
if (!parser.eventBubbles(event)) {
156+
if (!parser.eventBubbles(event) or parser.eventIsStopped(event)) {
157157
return res;
158158
}
159159

160-
// I think this mutates `event`, which means any JavaScript that captured
161-
// it will be mutated incorrectly.
162-
const Window = @import("../html/window.zig").Window;
163-
return parser.eventTargetDispatchEvent(
164-
parser.toEventTarget(Window, &page.window),
165-
event,
166-
);
160+
try page.window.dispatchForDocumentTarget(event);
161+
return true;
167162
}
168163
};
169164

src/browser/netsurf.zig

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,13 @@ pub fn eventStopPropagation(evt: *Event) void {
517517
std.debug.assert(err == c.DOM_NO_ERR);
518518
}
519519

520+
pub fn eventIsStopped(evt: *Event) bool {
521+
var res: bool = undefined;
522+
const err = c._dom_event_is_stopped(evt, &res);
523+
std.debug.assert(err == c.DOM_NO_ERR);
524+
return res;
525+
}
526+
520527
pub fn eventStopImmediatePropagation(evt: *Event) void {
521528
const err = c._dom_event_stop_immediate_propagation(evt);
522529
std.debug.assert(err == c.DOM_NO_ERR);

vendor/netsurf/libdom

0 commit comments

Comments
 (0)