core: darwin: Add ability to detect and fire magnify event which is triggered by pinch to zoom on a trackpad
This commit is contained in:
parent
98c303aefc
commit
ff11fd6d4c
2 changed files with 23 additions and 0 deletions
|
|
@ -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,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue