From 02cd5e98f9e3c8145884e482eabbd9a69898d0d5 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Tue, 21 Jan 2025 13:49:09 +0100 Subject: [PATCH] event_target: handle window target --- src/dom/event_target.zig | 8 +++++--- src/html/window.zig | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/dom/event_target.zig b/src/dom/event_target.zig index ca688993..b74b7680 100644 --- a/src/dom/event_target.zig +++ b/src/dom/event_target.zig @@ -29,6 +29,7 @@ const EventHandler = @import("../events/event.zig").EventHandler; const DOMException = @import("exceptions.zig").DOMException; const Nod = @import("node.zig"); +const Window = @import("../html/window.zig").Window; // EventTarget interfaces pub const Union = Nod.Union; @@ -40,9 +41,10 @@ pub const EventTarget = struct { pub const mem_guarantied = true; pub fn toInterface(et: *parser.EventTarget) !Union { - // NOTE: for now we state that all EventTarget are Nodes - // TODO: handle other types (eg. Window) - return Nod.Node.toInterface(@as(*parser.Node, @ptrCast(et))); + return switch (try parser.eventTargetGetType(et)) { + .window => .{ .Window = @as(*Window, @ptrCast(et)) }, + .node => Nod.Node.toInterface(@as(*parser.Node, @ptrCast(et))), + }; } // JS funcs diff --git a/src/html/window.zig b/src/html/window.zig index 65a8af67..efc89e05 100644 --- a/src/html/window.zig +++ b/src/html/window.zig @@ -57,6 +57,7 @@ pub const Window = struct { return Window{ .target = target orelse "", .navigator = navigator orelse .{}, + .base = .{ .et_type = @intFromEnum(parser.EventTargetType.window) }, }; }