Skip to content

Commit 1ba542f

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

File tree

3 files changed

+11
-11
lines changed

3 files changed

+11
-11
lines changed

src/browser/dom/event_target.zig

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -151,19 +151,12 @@ pub const EventTarget = struct {
151151
pub fn _dispatchEvent(self: *parser.EventTarget, event: *parser.Event, page: *Page) !bool {
152152
const res = try parser.eventTargetDispatchEvent(self, event);
153153

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

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-
);
158+
try page.window.dispatchForDocumentTarget(event);
159+
return true;
167160
}
168161
};
169162

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)