mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 15:13:28 +00:00
use redispatch, check for stopped
This commit is contained in:
@@ -151,19 +151,12 @@ pub const EventTarget = struct {
|
|||||||
pub fn _dispatchEvent(self: *parser.EventTarget, event: *parser.Event, page: *Page) !bool {
|
pub fn _dispatchEvent(self: *parser.EventTarget, event: *parser.Event, page: *Page) !bool {
|
||||||
const res = try parser.eventTargetDispatchEvent(self, event);
|
const res = try parser.eventTargetDispatchEvent(self, event);
|
||||||
|
|
||||||
// TODO: If we get this working, we should also create a getter to check
|
if (!parser.eventBubbles(event) or parser.eventIsStopped(event)) {
|
||||||
// stopPropagation and not bubble to window if true.
|
|
||||||
if (!parser.eventBubbles(event)) {
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
// I think this mutates `event`, which means any JavaScript that captured
|
try page.window.dispatchForDocumentTarget(event);
|
||||||
// it will be mutated incorrectly.
|
return true;
|
||||||
const Window = @import("../html/window.zig").Window;
|
|
||||||
return parser.eventTargetDispatchEvent(
|
|
||||||
parser.toEventTarget(Window, &page.window),
|
|
||||||
event,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -517,6 +517,13 @@ pub fn eventStopPropagation(evt: *Event) void {
|
|||||||
std.debug.assert(err == c.DOM_NO_ERR);
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn eventIsStopped(evt: *Event) bool {
|
||||||
|
var res: bool = undefined;
|
||||||
|
const err = c._dom_event_is_stopped(evt, &res);
|
||||||
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
pub fn eventStopImmediatePropagation(evt: *Event) void {
|
pub fn eventStopImmediatePropagation(evt: *Event) void {
|
||||||
const err = c._dom_event_stop_immediate_propagation(evt);
|
const err = c._dom_event_stop_immediate_propagation(evt);
|
||||||
std.debug.assert(err == c.DOM_NO_ERR);
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
|
|||||||
2
vendor/netsurf/libdom
vendored
2
vendor/netsurf/libdom
vendored
Submodule vendor/netsurf/libdom updated: 0a6ba2c73d...b7db06f583
Reference in New Issue
Block a user