Skip to content

Commit 110a43d

Browse files
committed
event: add detail and view implementations
1 parent b744ac4 commit 110a43d

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

src/events/event_ui.zig

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ pub const UIEvent = struct {
2424
return evt;
2525
}
2626

27-
// pub fn get_detail(self: parser.EventUI) !u32 {
28-
// return try parser.eventUIDetail(self);
29-
// }
27+
pub fn get_detail(self: *parser.UIEvent) !i32 {
28+
return try parser.uiEventDetail(self);
29+
}
3030

31-
// pub fn get_view(self: parser.Event) !?Window {
32-
// return try parser.eventUIView(self);
33-
// }
31+
pub fn get_view(self: *parser.UIEvent) !?Window {
32+
return try parser.uiEventView(self);
33+
}
3434
};
3535

3636
pub fn testExecFn(
@@ -43,6 +43,9 @@ pub fn testExecFn(
4343
.{ .src = "content.addEventListener('evt', function(e) {evt = e})", .ex = "undefined" },
4444
.{ .src = "content.dispatchEvent(new UIEvent('evt'))", .ex = "true" },
4545
.{ .src = "evt instanceof UIEvent", .ex = "true" },
46+
.{ .src = "evt.__proto__.constructor.name", .ex = "UIEvent" },
47+
.{ .src = "evt.detail", .ex = "0" },
48+
.{ .src = "evt.view", .ex = "null" },
4649
};
4750
try checkCases(js_env, &ui_event);
4851
}

src/netsurf.zig

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,12 +471,28 @@ pub fn uiEventInit(evt: *UIEvent, typ: []const u8, opts: UIEventInit) !void {
471471
try strFromData(typ),
472472
opts.bubbles,
473473
opts.cancelable,
474+
// TODO pass the Window as view.
475+
// opts.view
474476
null,
475477
opts.detail,
476478
);
477479
try DOMErr(err);
478480
}
479481

482+
pub fn uiEventDetail(evt: *UIEvent) !i32 {
483+
var res: i32 = undefined;
484+
const err = c._dom_ui_event_get_detail(evt, &res);
485+
try DOMErr(err);
486+
return res;
487+
}
488+
489+
pub fn uiEventView(_: *UIEvent) !?Window {
490+
// TODO retrieve the Window as view.
491+
// const err = c._dom_ui_event_get_view(evt, &res);
492+
// try DOMErr(err);
493+
return null;
494+
}
495+
480496
// EventHandler
481497
fn event_handler_cbk(data: *anyopaque) *Callback {
482498
const ptr: *align(@alignOf(*Callback)) anyopaque = @alignCast(data);

0 commit comments

Comments
 (0)