let marshal f argv =
match Closure.get_args argv with
| _ :: [`POINTER(Some p)] ->
let ev = GdkEvent.unsafe_copy p in
Closure.set_result argv (`BOOL(f ev))
| _ -> invalid_arg "GtkBase.Widget.Event.marshal"