mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-16 08:46:08 +03:00
gtk: fix ui/blueprint builder
This commit is contained in:
@ -7,6 +7,7 @@ const gtk = @import("gtk");
|
|||||||
const gobject = @import("gobject");
|
const gobject = @import("gobject");
|
||||||
|
|
||||||
resource_name: [:0]const u8,
|
resource_name: [:0]const u8,
|
||||||
|
builder: ?*gtk.Builder,
|
||||||
|
|
||||||
pub fn init(comptime name: []const u8, comptime kind: enum { blp, ui }) Builder {
|
pub fn init(comptime name: []const u8, comptime kind: enum { blp, ui }) Builder {
|
||||||
comptime {
|
comptime {
|
||||||
@ -47,6 +48,7 @@ pub fn init(comptime name: []const u8, comptime kind: enum { blp, ui }) Builder
|
|||||||
|
|
||||||
return .{
|
return .{
|
||||||
.resource_name = "/com/mitchellh/ghostty/ui/" ++ name ++ ".ui",
|
.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);
|
class.setTemplateFromResource(self.resource_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn getObject(self: *const Builder, name: [:0]const u8) ?gobject.Object {
|
pub fn getObject(self: *Builder, name: [:0]const u8) ?*gobject.Object {
|
||||||
const builder = gtk.Builder.newFromResource(self.resource_name);
|
const builder = builder: {
|
||||||
defer builder.unref();
|
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);
|
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);
|
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);
|
defer alloc.free(data);
|
||||||
|
|
||||||
if ((comptime !build_options.adwaita) and std.mem.indexOf(u8, data, "lib=\"Adw\"") != null) {
|
if ((comptime !build_options.adwaita) and std.mem.indexOf(u8, data, "lib=\"Adw\"") != null) {
|
||||||
|
@ -436,6 +436,7 @@ pub fn add(
|
|||||||
});
|
});
|
||||||
const gobject_imports = .{
|
const gobject_imports = .{
|
||||||
.{ "gobject", "gobject2" },
|
.{ "gobject", "gobject2" },
|
||||||
|
.{ "gio", "gio2" },
|
||||||
.{ "glib", "glib2" },
|
.{ "glib", "glib2" },
|
||||||
.{ "gtk", "gtk4" },
|
.{ "gtk", "gtk4" },
|
||||||
.{ "gdk", "gdk4" },
|
.{ "gdk", "gdk4" },
|
||||||
@ -520,9 +521,8 @@ pub fn add(
|
|||||||
.target = b.host,
|
.target = b.host,
|
||||||
});
|
});
|
||||||
gtk_builder_check.root_module.addOptions("build_options", self.options);
|
gtk_builder_check.root_module.addOptions("build_options", self.options);
|
||||||
gtk_builder_check.linkSystemLibrary2("gtk4", dynamic_link_opts);
|
gtk_builder_check.root_module.addImport("gtk", gobject.module("gtk4"));
|
||||||
if (self.config.adwaita) gtk_builder_check.linkSystemLibrary2("libadwaita-1", dynamic_link_opts);
|
if (self.config.adwaita) gtk_builder_check.root_module.addImport("adw", gobject.module("adw1"));
|
||||||
gtk_builder_check.linkLibC();
|
|
||||||
|
|
||||||
for (gresource.dependencies) |pathname| {
|
for (gresource.dependencies) |pathname| {
|
||||||
const extension = std.fs.path.extension(pathname);
|
const extension = std.fs.path.extension(pathname);
|
||||||
|
Reference in New Issue
Block a user