summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitchell Hashimoto <m@mitchellh.com>2025-10-06 08:30:23 -0700
committerGitHub <noreply@github.com>2025-10-06 08:30:23 -0700
commit972dc94386747e476b3bb9aff52136d1af3ef415 (patch)
tree35a4fed9488d817020b1c1b0d9e80792f4e17268
parent48d5fc925f0cae0c8f0b4eaa7422d9d05f62b383 (diff)
parentd2ee80bc49dd0aaabcffed2cf4d9c3ef8cd90c02 (diff)
gtk: use std.Io.Writer to generate runtime CSS (#9050)
-rw-r--r--src/apprt/gtk/class/application.zig29
1 files changed, 14 insertions, 15 deletions
diff --git a/src/apprt/gtk/class/application.zig b/src/apprt/gtk/class/application.zig
index af56130d3..07663fec9 100644
--- a/src/apprt/gtk/class/application.zig
+++ b/src/apprt/gtk/class/application.zig
@@ -806,19 +806,19 @@ pub const Application = extern struct {
}
}
- fn loadRuntimeCss(self: *Self) Allocator.Error!void {
+ fn loadRuntimeCss(self: *Self) (Allocator.Error || std.Io.Writer.Error)!void {
const alloc = self.allocator();
const config = self.private().config.get();
- var buf: std.ArrayListUnmanaged(u8) = try .initCapacity(alloc, 2048);
- defer buf.deinit(alloc);
+ var buf: std.Io.Writer.Allocating = try .initCapacity(alloc, 2048);
+ defer buf.deinit();
- const writer = buf.writer(alloc);
+ const writer = &buf.writer;
// Load standard css first as it can override some of the user configured styling.
- try loadRuntimeCss414(config, &writer);
- try loadRuntimeCss416(config, &writer);
+ try loadRuntimeCss414(config, writer);
+ try loadRuntimeCss416(config, writer);
const unfocused_fill: CoreConfig.Color = config.@"unfocused-split-fill" orelse config.background;
@@ -861,7 +861,8 @@ pub const Application = extern struct {
// ensure that we have a sentinel
try writer.writeByte(0);
- const data = buf.items[0 .. buf.items.len - 1 :0];
+ const data_ = buf.written();
+ const data = data_[0 .. data_.len - 1 :0];
log.debug("runtime CSS is {d} bytes", .{data.len + 1});
@@ -875,8 +876,8 @@ pub const Application = extern struct {
/// Load runtime CSS for older than GTK 4.16
fn loadRuntimeCss414(
config: *const CoreConfig,
- writer: *const std.ArrayListUnmanaged(u8).Writer,
- ) Allocator.Error!void {
+ writer: *std.Io.Writer,
+ ) std.Io.Writer.Error!void {
if (gtk_version.runtimeAtLeast(4, 16, 0)) return;
const window_theme = config.@"window-theme";
@@ -911,8 +912,8 @@ pub const Application = extern struct {
/// Load runtime for GTK 4.16 and newer
fn loadRuntimeCss416(
config: *const CoreConfig,
- writer: *const std.ArrayListUnmanaged(u8).Writer,
- ) Allocator.Error!void {
+ writer: *std.Io.Writer,
+ ) std.Io.Writer.Error!void {
if (gtk_version.runtimeUntil(4, 16, 0)) return;
const window_theme = config.@"window-theme";
@@ -1044,9 +1045,7 @@ pub const Application = extern struct {
defer file.close();
log.info("loading gtk-custom-css path={s}", .{path});
- var buf: [4096]u8 = undefined;
- var reader = file.reader(&buf);
- const contents = try reader.interface.readAlloc(
+ const contents = try file.readToEndAlloc(
alloc,
5 * 1024 * 1024, // 5MB,
);
@@ -1164,7 +1163,7 @@ pub const Application = extern struct {
// just stuck with the old CSS but we don't want to fail the entire
// config change operation.
self.loadRuntimeCss() catch |err| switch (err) {
- error.OutOfMemory => log.warn(
+ error.WriteFailed, error.OutOfMemory => log.warn(
"out of memory loading runtime CSS, no runtime CSS applied",
.{},
),