@@ -111,27 +111,30 @@ pub const Window = struct {
111
111
/// Sets `onload_callback`.
112
112
pub fn set_onload (self : * Window , maybe_listener : ? EventHandler.Listener , page : * Page ) ! void {
113
113
const event_target = parser .toEventTarget (Window , self );
114
+ const event_type = "load" ;
114
115
116
+ // Check if we have a listener set.
115
117
if (self .onload_callback ) | callback | {
116
- // If we got here, it means `onload_callback` has been set before
117
- // so listener cannot be null.
118
- const listener = try parser .eventTargetHasListener (event_target , "load" , false , callback .id );
118
+ const listener = try parser .eventTargetHasListener (event_target , event_type , false , callback .id );
119
119
std .debug .assert (listener != null );
120
-
121
- try parser .eventTargetRemoveEventListener (event_target , "load" , listener .? , false );
120
+ try parser .eventTargetRemoveEventListener (event_target , event_type , listener .? , false );
122
121
}
123
122
124
123
if (maybe_listener ) | listener | {
125
- // The only time this can return null if the listener is already
126
- // registered. But before calling `register`, all of our functions
127
- // remove any existing listener, so it should be impossible to get null
128
- // from this function call.
129
- _ = try EventHandler .register (page .arena , event_target , "load" , listener , null ) orelse unreachable ;
130
- self .onload_callback = listener .function ;
131
- } else {
132
- // Just unset the listener.
133
- self .onload_callback = null ;
124
+ switch (listener ) {
125
+ // If an object is given as listener, do nothing.
126
+ .object = > {},
127
+ .function = > | callback | {
128
+ _ = try EventHandler .register (page .arena , event_target , event_type , listener , null ) orelse unreachable ;
129
+ self .onload_callback = callback ;
130
+
131
+ return ;
132
+ },
133
+ }
134
134
}
135
+
136
+ // Just unset the listener.
137
+ self .onload_callback = null ;
135
138
}
136
139
137
140
pub fn get_window (self : * Window ) * Window {
0 commit comments