darwin: Add insertText callback which is responsible for firing char_input events

This commit is contained in:
foxnne 2024-12-12 11:54:15 -06:00 committed by Emi Gutekanst
parent c70b1817ee
commit 60a68a7453

View file

@ -176,6 +176,14 @@ fn initWindow(
); );
view.setBlock_keyDown(keyDown.asBlock().copy()); view.setBlock_keyDown(keyDown.asBlock().copy());
var insertText = objc.foundation.stackBlockLiteral(
ViewCallbacks.insertText,
context,
null,
null,
);
view.setBlock_insertText(insertText.asBlock().copy());
var keyUp = objc.foundation.stackBlockLiteral( var keyUp = objc.foundation.stackBlockLiteral(
ViewCallbacks.keyUp, ViewCallbacks.keyUp,
context, context,
@ -413,6 +421,16 @@ const ViewCallbacks = struct {
} }
} }
pub fn insertText(block: *objc.foundation.BlockLiteral(*Context), event: *objc.app_kit.Event, codepoint: u32) callconv(.C) void {
_ = event; // autofix
const core: *Core = block.context.core;
const window_id = block.context.window_id;
core.pushEvent(.{ .char_input = .{
.codepoint = @intCast(codepoint),
.window_id = window_id,
} });
}
pub fn keyUp(block: *objc.foundation.BlockLiteral(*Context), event: *objc.app_kit.Event) callconv(.C) void { pub fn keyUp(block: *objc.foundation.BlockLiteral(*Context), event: *objc.app_kit.Event) callconv(.C) void {
const core: *Core = block.context.core; const core: *Core = block.context.core;
const window_id = block.context.window_id; const window_id = block.context.window_id;