mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-15 16:26:08 +03:00
gtk: fix ui/blueprint builder (#5727)
fixes issues found while making use of the new builder api
This commit is contained in:
@ -7,6 +7,7 @@ const gtk = @import("gtk");
|
||||
const gobject = @import("gobject");
|
||||
|
||||
resource_name: [:0]const u8,
|
||||
builder: ?*gtk.Builder,
|
||||
|
||||
pub fn init(comptime name: []const u8, comptime kind: enum { blp, ui }) Builder {
|
||||
comptime {
|
||||
@ -47,6 +48,7 @@ pub fn init(comptime name: []const u8, comptime kind: enum { blp, ui }) Builder
|
||||
|
||||
return .{
|
||||
.resource_name = "/com/mitchellh/ghostty/ui/" ++ name ++ ".ui",
|
||||
.builder = null,
|
||||
};
|
||||
}
|
||||
|
||||
@ -54,8 +56,17 @@ pub fn setWidgetClassTemplate(self: *const Builder, class: *gtk.WidgetClass) voi
|
||||
class.setTemplateFromResource(self.resource_name);
|
||||
}
|
||||
|
||||
pub fn getObject(self: *const Builder, name: [:0]const u8) ?gobject.Object {
|
||||
const builder = gtk.Builder.newFromResource(self.resource_name);
|
||||
defer builder.unref();
|
||||
pub fn getObject(self: *Builder, name: [:0]const u8) ?*gobject.Object {
|
||||
const builder = builder: {
|
||||
if (self.builder) |builder| break :builder builder;
|
||||
const builder = gtk.Builder.newFromResource(self.resource_name);
|
||||
self.builder = builder;
|
||||
break :builder builder;
|
||||
};
|
||||
|
||||
return builder.getObject(name);
|
||||
}
|
||||
|
||||
pub fn deinit(self: *const Builder) void {
|
||||
if (self.builder) |builder| builder.unref();
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ pub fn main() !void {
|
||||
};
|
||||
defer alloc.free(filename);
|
||||
|
||||
const data = try std.fs.cwd().readFileAlloc(alloc, filename, std.math.maxInt(u16));
|
||||
const data = try std.fs.cwd().readFileAllocOptions(alloc, filename, std.math.maxInt(u16), null, 1, 0);
|
||||
defer alloc.free(data);
|
||||
|
||||
if ((comptime !build_options.adwaita) and std.mem.indexOf(u8, data, "lib=\"Adw\"") != null) {
|
||||
|
@ -436,6 +436,7 @@ pub fn add(
|
||||
});
|
||||
const gobject_imports = .{
|
||||
.{ "gobject", "gobject2" },
|
||||
.{ "gio", "gio2" },
|
||||
.{ "glib", "glib2" },
|
||||
.{ "gtk", "gtk4" },
|
||||
.{ "gdk", "gdk4" },
|
||||
@ -520,9 +521,8 @@ pub fn add(
|
||||
.target = b.host,
|
||||
});
|
||||
gtk_builder_check.root_module.addOptions("build_options", self.options);
|
||||
gtk_builder_check.linkSystemLibrary2("gtk4", dynamic_link_opts);
|
||||
if (self.config.adwaita) gtk_builder_check.linkSystemLibrary2("libadwaita-1", dynamic_link_opts);
|
||||
gtk_builder_check.linkLibC();
|
||||
gtk_builder_check.root_module.addImport("gtk", gobject.module("gtk4"));
|
||||
if (self.config.adwaita) gtk_builder_check.root_module.addImport("adw", gobject.module("adw1"));
|
||||
|
||||
for (gresource.dependencies) |pathname| {
|
||||
const extension = std.fs.path.extension(pathname);
|
||||
|
Reference in New Issue
Block a user