diff --git a/src/apprt/glfw.zig b/src/apprt/glfw.zig index 10835fb5f..998f88022 100644 --- a/src/apprt/glfw.zig +++ b/src/apprt/glfw.zig @@ -29,6 +29,10 @@ const glfwNative = glfw.Native(.{ .x11 = builtin.os.tag == .linux, }); +/// True if darwin-specific logic is enabled +const darwin_enabled = builtin.target.os.tag.isDarwin() and + build_config.artifact == .exe; + const log = std.log.scoped(.glfw); pub const App = struct { @@ -40,7 +44,7 @@ pub const App = struct { quit: bool = false, /// Mac-specific state. - darwin: if (Darwin.enabled) Darwin else void, + darwin: if (darwin_enabled) Darwin else void, pub const Options = struct {}; @@ -66,8 +70,8 @@ pub const App = struct { glfw.setErrorCallback(glfwErrorCallback); // Mac-specific state. For example, on Mac we enable window tabbing. - var darwin = if (Darwin.enabled) try Darwin.init() else {}; - errdefer if (Darwin.enabled) darwin.deinit(); + var darwin = if (darwin_enabled) try Darwin.init() else {}; + errdefer if (darwin_enabled) darwin.deinit(); // Load our configuration var config = try Config.load(core_app.alloc); @@ -338,7 +342,7 @@ pub const App = struct { /// Create a new tab in the parent surface. fn newTab(self: *App, parent_: ?*CoreSurface) !void { - if (!Darwin.enabled) { + if (comptime !darwin_enabled) { log.warn("tabbing is not supported on this platform", .{}); return; } @@ -439,8 +443,6 @@ pub const App = struct { /// Mac and the artifact is a standalone exe. We don't target libs because /// the embedded API doesn't do windowing. const Darwin = struct { - const enabled = builtin.target.os.tag.isDarwin() and build_config.artifact == .exe; - tabbing_id: *macos.foundation.String, pub fn init() !Darwin { @@ -554,7 +556,7 @@ pub const Surface = struct { } // On Mac, enable window tabbing - if (App.Darwin.enabled) { + if (comptime darwin_enabled) { const NSWindowTabbingMode = enum(usize) { automatic = 0, preferred = 1, disallowed = 2 }; const nswindow = objc.Object.fromId(glfwNative.getCocoaWindow(win).?); @@ -630,7 +632,7 @@ pub const Surface = struct { // Clean up our core surface so that all the rendering and IO stop. self.core_surface.deinit(); - if (App.Darwin.enabled) { + if (comptime darwin_enabled) { const nswindow = objc.Object.fromId(glfwNative.getCocoaWindow(self.window).?); const tabgroup = nswindow.getProperty(objc.Object, "tabGroup"); const windows = tabgroup.getProperty(objc.Object, "windows");