aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/src/apprt/gtk/class.zig
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-09-10 21:51:57 +0300
committerGitHub <noreply@github.com>2026-09-10 21:51:57 +0300
commit425c86179791cd32e2d4ce0ae7f269940b4b0663 (patch)
treee52c4383a6d69216cbe2a32638bf90841d7e2189 /vendor/libghostty-vt/src/apprt/gtk/class.zig
parent90e947a6e26e02f10ec7f1694c4eb5b78a86406b (diff)
chore: upgrade libghostty and preserve terminal behavior (#3906)
Diffstat (limited to 'vendor/libghostty-vt/src/apprt/gtk/class.zig')
-rw-r--r--vendor/libghostty-vt/src/apprt/gtk/class.zig28
1 files changed, 18 insertions, 10 deletions
diff --git a/vendor/libghostty-vt/src/apprt/gtk/class.zig b/vendor/libghostty-vt/src/apprt/gtk/class.zig
index 942666cf..a1dba716 100644
--- a/vendor/libghostty-vt/src/apprt/gtk/class.zig
+++ b/vendor/libghostty-vt/src/apprt/gtk/class.zig
@@ -145,16 +145,24 @@ pub fn Common(
/// as the virtual method but the self parameter points to the
/// target instead of the original class.
fn ImplementFunc(comptime T: type) type {
- var params: [fn_info.params.len]std.builtin.Type.Fn.Param = undefined;
- @memcpy(&params, fn_info.params);
- params[0].type = *ClassInstance(T);
- return @Type(.{ .@"fn" = .{
- .calling_convention = fn_info.calling_convention,
- .is_generic = fn_info.is_generic,
- .is_var_args = fn_info.is_var_args,
- .return_type = fn_info.return_type,
- .params = &params,
- } });
+ var types: [fn_info.params.len]type = undefined;
+ var attrs: [fn_info.params.len]std.builtin.Type.Fn.Param.Attributes = undefined;
+
+ for (fn_info.params, &types, &attrs) |info, *ty, *attr| {
+ ty.* = info.type.?;
+ attr.* = .{ .@"noalias" = info.is_noalias };
+ }
+ types[0] = *ClassInstance(T);
+
+ return @Fn(
+ &types,
+ &attrs,
+ fn_info.return_type.?,
+ .{
+ .@"callconv" = fn_info.calling_convention,
+ .varargs = fn_info.is_var_args,
+ },
+ );
}
};
}