@@ -749,6 +749,13 @@ pub fn eventTargetDispatchEvent(et: *EventTarget, event: *Event) !bool {
749749 return res ;
750750}
751751
752+ pub fn eventTargetInternalType (et : * EventTarget ) ! EventTargetTBase.InternalType {
753+ var res : u32 = undefined ;
754+ const err = eventTargetVtable (et ).internal_type .? (et , & res );
755+ try DOMErr (err );
756+ return @enumFromInt (res );
757+ }
758+
752759pub fn elementDispatchEvent (element : * Element , event : * Event ) ! bool {
753760 const et : * EventTarget = toEventTarget (Element , element );
754761 return eventTargetDispatchEvent (et , @ptrCast (event ));
@@ -771,12 +778,17 @@ pub fn eventTargetTBaseFieldName(comptime T: type) ?[]const u8 {
771778// EventTargetBase is used to implement EventTarget for pure zig struct.
772779pub const EventTargetTBase = extern struct {
773780 const Self = @This ();
781+ const InternalType = enum (u32 ) {
782+ libdom = 0 ,
783+ plain = 1 ,
784+ };
774785
775786 vtable : ? * const c.struct_dom_event_target_vtable = & c.struct_dom_event_target_vtable {
776787 .dispatch_event = dispatch_event ,
777788 .remove_event_listener = remove_event_listener ,
778789 .add_event_listener = add_event_listener ,
779790 .iter_event_listener = iter_event_listener ,
791+ .internal_type = internal_type ,
780792 },
781793
782794 // When we dispatch the event, we need to provide a target. In reality, the
@@ -790,6 +802,7 @@ pub const EventTargetTBase = extern struct {
790802 refcnt : u32 = 0 ,
791803
792804 eti : c.dom_event_target_internal = c.dom_event_target_internal { .listeners = null },
805+ internal_target_type : InternalType = .libdom ,
793806
794807 pub fn add_event_listener (et : [* c ]c.dom_event_target , t : [* c ]c.dom_string , l : ? * c.struct_dom_event_listener , capture : bool ) callconv (.C ) c.dom_exception {
795808 const self = @as (* Self , @ptrCast (et ));
@@ -822,6 +835,12 @@ pub const EventTargetTBase = extern struct {
822835 const self = @as (* Self , @ptrCast (et ));
823836 return c ._dom_event_target_iter_event_listener (self .eti , t , capture , cur , next , l );
824837 }
838+
839+ pub fn internal_type (et : [* c ]c.dom_event_target , internal_type_ : [* c ]u32 ) callconv (.C ) c.dom_exception {
840+ const self = @as (* Self , @ptrCast (et ));
841+ internal_type_ .* = @intFromEnum (self .internal_target_type );
842+ return c .DOM_NO_ERR ;
843+ }
825844};
826845
827846// MouseEvent
0 commit comments