diff --git a/src/renderer/vaxis/renderer.zig b/src/renderer/vaxis/renderer.zig index 80bccb3..2d93a99 100644 --- a/src/renderer/vaxis/renderer.zig +++ b/src/renderer/vaxis/renderer.zig @@ -146,7 +146,12 @@ pub fn leave_alternate_screen(self: *Self) void { self.vx.exitAltScreen() catch {}; } -pub fn process_input_event(self: *Self, input_: []const u8, text: ?[]const u8) !void { +pub fn process_renderer_event(self: *Self, msg: []const u8) !void { + var input_: []const u8 = undefined; + var text_: []const u8 = undefined; + if (!try cbor.match(msg, .{ "RDR", cbor.extract(&input_), cbor.extract(&text_) })) + return error.InvalidRendererEvent; + const text = if (text_.len > 0) text_ else null; const event = std.mem.bytesAsValue(vaxis.Event, input_); switch (event.*) { .key_press => |key__| { @@ -493,7 +498,7 @@ const Loop = struct { }, else => {}, } - self.pid.send(.{ "VXS", std.mem.asBytes(&event), text }) catch @panic("send VXS event failed"); + self.pid.send(.{ "RDR", std.mem.asBytes(&event), text }) catch @panic("send RDR event failed"); if (free_text) self.vaxis.opts.system_clipboard_allocator.?.free(text); } diff --git a/src/renderer/win32/renderer.zig b/src/renderer/win32/renderer.zig index 5af72d7..5e73b3d 100644 --- a/src/renderer/win32/renderer.zig +++ b/src/renderer/win32/renderer.zig @@ -149,7 +149,7 @@ pub fn leave_alternate_screen(self: *Self) void { _ = self; @panic("todo"); } -pub fn process_gui_event(self: *Self, m: thespian.message) !void { +pub fn process_renderer_event(self: *Self, m: thespian.message) !void { const Input = struct { kind: u8, codepoint: u21, @@ -356,8 +356,3 @@ pub fn cursor_disable(self: *Self) void { _ = self; //@panic("todo"); } -pub fn ucs32_to_utf8(ucs32: []const u32, utf8: []u8) !usize { - _ = ucs32; - _ = utf8; - @panic("todo"); -} diff --git a/src/tui/tui.zig b/src/tui/tui.zig index cb12d92..a844153 100644 --- a/src/tui/tui.zig +++ b/src/tui/tui.zig @@ -248,23 +248,14 @@ fn receive(self: *Self, from: tp.pid_ref, m: tp.message) tp.result { } fn receive_safe(self: *Self, from: tp.pid_ref, m: tp.message) !void { - var input: []const u8 = undefined; - var text: []const u8 = undefined; - if (try m.match(.{ "VXS", tp.extract(&input), tp.extract(&text) })) { - try self.rdr.process_input_event(input, if (text.len > 0) text else null); + if (try m.match(.{ "RDR", tp.more })) { + try self.rdr.process_renderer_event(m.buf); try self.dispatch_flush_input_event(); if (self.unrendered_input_events_count > 0 and !self.frame_clock_running) need_render(); return; } - if (build_options.gui) { - if (try m.match(.{ "GUI", tp.more })) { - try self.rdr.process_gui_event(m); - return; - } - } - if (self.message_filters.filter(from, m) catch |e| return self.logger.err("filter", e)) return; @@ -313,6 +304,7 @@ fn receive_safe(self: *Self, from: tp.pid_ref, m: tp.message) !void { return; } + var text: []const u8 = undefined; if (try m.match(.{ "system_clipboard", tp.extract(&text) })) { try self.dispatch_flush_input_event(); return if (command.get_id("mini_mode_paste")) |id|