diff --git a/src/Core.zig b/src/Core.zig index 214f4ce3..9f61db96 100644 --- a/src/Core.zig +++ b/src/Core.zig @@ -522,6 +522,10 @@ pub const Event = union(enum) { window_open: struct { window_id: mach.ObjectID, }, + magnify: struct { + window_id: mach.ObjectID, + magnification: f32, + }, focus_gained: struct { window_id: mach.ObjectID, }, diff --git a/src/core/Darwin.zig b/src/core/Darwin.zig index 8a6114f4..05e2bd22 100644 --- a/src/core/Darwin.zig +++ b/src/core/Darwin.zig @@ -209,6 +209,14 @@ fn initWindow( ); view.setBlock_flagsChanged(flagsChanged.asBlock().copy()); + var magnify = objc.foundation.stackBlockLiteral( + ViewCallbacks.magnify, + context, + null, + null, + ); + view.setBlock_magnify(magnify.asBlock().copy()); + var mouseMoved = objc.foundation.stackBlockLiteral( ViewCallbacks.mouseMoved, context, @@ -405,6 +413,17 @@ const ViewCallbacks = struct { } }); } + // This is currently only supported on macOS using a trackpad + pub fn magnify(block: *objc.foundation.BlockLiteral(*Context), event: *objc.app_kit.Event) callconv(.C) void { + const core: *Core = block.context.core; + const window_id = block.context.window_id; + + core.pushEvent(.{ .magnify = .{ + .window_id = window_id, + .magnification = @floatCast(event.magnification()), + } }); + } + pub fn keyDown(block: *objc.foundation.BlockLiteral(*Context), event: *objc.app_kit.Event) callconv(.C) void { const core: *Core = block.context.core; const window_id = block.context.window_id;