diff --git a/src/apprt/gtk/Window.zig b/src/apprt/gtk/Window.zig index 32d989211..0f6a14c8c 100644 --- a/src/apprt/gtk/Window.zig +++ b/src/apprt/gtk/Window.zig @@ -154,7 +154,7 @@ pub fn init(self: *Window, app: *App) !void { // are decorated or not because we can have a keybind to toggle the // decorations. if (app.config.@"gtk-titlebar") { - const header = HeaderBar.create(self); + const header = HeaderBar.init(self); { const btn = c.gtk_menu_button_new(); diff --git a/src/apprt/gtk/headerbar.zig b/src/apprt/gtk/headerbar.zig index e60f7a04d..b1567ce27 100644 --- a/src/apprt/gtk/headerbar.zig +++ b/src/apprt/gtk/headerbar.zig @@ -4,17 +4,17 @@ const c = @import("c.zig").c; const Window = @import("Window.zig"); const adwaita = @import("adwaita.zig"); -const AdwHeaderBar = if (adwaita.versionAtLeast(0, 0, 0)) c.AdwHeaderBar else anyopaque; +const AdwHeaderBar = if (adwaita.versionAtLeast(0, 0, 0)) c.AdwHeaderBar else void; pub const HeaderBar = union(enum) { adw: *AdwHeaderBar, gtk: *c.GtkHeaderBar, - pub fn create(window: *Window) HeaderBar { - const app = window.app; - - if (comptime adwaita.versionAtLeast(1, 4, 0)) { - if (adwaita.enabled(&app.config)) return initAdw(); + pub fn init(window: *Window) HeaderBar { + if ((comptime adwaita.versionAtLeast(1, 4, 0)) and + adwaita.enabled(&window.app.config)) + { + return initAdw(); } return initGtk(); @@ -22,13 +22,11 @@ pub const HeaderBar = union(enum) { fn initAdw() HeaderBar { const headerbar = c.adw_header_bar_new(); - return .{ .adw = @ptrCast(headerbar) }; } fn initGtk() HeaderBar { const headerbar = c.gtk_header_bar_new(); - return .{ .gtk = @ptrCast(headerbar) }; } @@ -41,21 +39,31 @@ pub const HeaderBar = union(enum) { pub fn packEnd(self: HeaderBar, widget: *c.GtkWidget) void { switch (self) { - .adw => |headerbar| if (comptime adwaita.versionAtLeast(0, 0, 0)) - c.adw_header_bar_pack_end(@ptrCast(@alignCast(headerbar)), widget) - else - unreachable, - .gtk => |headerbar| c.gtk_header_bar_pack_end(@ptrCast(@alignCast(headerbar)), widget), + .adw => |headerbar| if (comptime adwaita.versionAtLeast(0, 0, 0)) { + c.adw_header_bar_pack_end( + @ptrCast(@alignCast(headerbar)), + widget, + ); + }, + .gtk => |headerbar| c.gtk_header_bar_pack_end( + @ptrCast(@alignCast(headerbar)), + widget, + ), } } pub fn packStart(self: HeaderBar, widget: *c.GtkWidget) void { switch (self) { - .adw => |headerbar| if (comptime adwaita.versionAtLeast(0, 0, 0)) - c.adw_header_bar_pack_start(@ptrCast(@alignCast(headerbar)), widget) - else - unreachable, - .gtk => |headerbar| c.gtk_header_bar_pack_start(@ptrCast(@alignCast(headerbar)), widget), + .adw => |headerbar| if (comptime adwaita.versionAtLeast(0, 0, 0)) { + c.adw_header_bar_pack_start( + @ptrCast(@alignCast(headerbar)), + widget, + ); + }, + .gtk => |headerbar| c.gtk_header_bar_pack_start( + @ptrCast(@alignCast(headerbar)), + widget, + ), } } };