refactor: move bracketed paste handling to functions and log errors
This commit is contained in:
parent
75b1c85723
commit
d286aae67a
1 changed files with 20 additions and 11 deletions
|
@ -170,11 +170,9 @@ pub fn process_input_event(self: *Self, input_: []const u8, text: ?[]const u8) !
|
|||
text orelse input.utils.key_id_string(key_.base_layout_codepoint orelse key_.codepoint),
|
||||
@as(u8, @bitCast(key_.mods)),
|
||||
});
|
||||
if (self.bracketed_paste and self.handle_bracketed_paste_input(cbor_msg) catch |e| {
|
||||
self.bracketed_paste_buffer.clearAndFree();
|
||||
self.bracketed_paste = false;
|
||||
return e;
|
||||
}) {} else if (self.dispatch_input) |f| f(self.handler_ctx, cbor_msg);
|
||||
if (self.bracketed_paste and self.handle_bracketed_paste_input(cbor_msg) catch |e| return self.handle_bracketed_paste_error(e)) {
|
||||
// we have stored it to handle on .paste_end, so do nothing more here
|
||||
} else if (self.dispatch_input) |f| f(self.handler_ctx, cbor_msg);
|
||||
},
|
||||
.key_release => |key__| {
|
||||
const key_ = filter_mods(key__);
|
||||
|
@ -238,10 +236,7 @@ pub fn process_input_event(self: *Self, input_: []const u8, text: ?[]const u8) !
|
|||
.focus_out => {
|
||||
if (self.dispatch_event) |f| f(self.handler_ctx, try self.fmtmsg(.{"focus_out"}));
|
||||
},
|
||||
.paste_start => {
|
||||
self.bracketed_paste = true;
|
||||
self.bracketed_paste_buffer.clearRetainingCapacity();
|
||||
},
|
||||
.paste_start => try self.handle_bracketed_paste_start(),
|
||||
.paste_end => try self.handle_bracketed_paste_end(),
|
||||
.paste => |_| {
|
||||
if (self.dispatch_event) |f| f(self.handler_ctx, try self.fmtmsg(.{ "system_clipboard", text }));
|
||||
|
@ -312,13 +307,27 @@ fn handle_bracketed_paste_input(self: *Self, cbor_msg: []const u8) !bool {
|
|||
return false;
|
||||
}
|
||||
|
||||
fn handle_bracketed_paste_start(self: *Self) !void {
|
||||
self.bracketed_paste = true;
|
||||
self.bracketed_paste_buffer.clearRetainingCapacity();
|
||||
}
|
||||
|
||||
fn handle_bracketed_paste_end(self: *Self) !void {
|
||||
defer self.bracketed_paste_buffer.clearAndFree();
|
||||
defer {
|
||||
self.bracketed_paste_buffer.clearAndFree();
|
||||
self.bracketed_paste = false;
|
||||
}
|
||||
if (!self.bracketed_paste) return;
|
||||
self.bracketed_paste = false;
|
||||
if (self.dispatch_event) |f| f(self.handler_ctx, try self.fmtmsg(.{ "system_clipboard", self.bracketed_paste_buffer.items }));
|
||||
}
|
||||
|
||||
fn handle_bracketed_paste_error(self: *Self, e: anytype) !void {
|
||||
self.logger.err("bracketed paste", e);
|
||||
self.bracketed_paste_buffer.clearAndFree();
|
||||
self.bracketed_paste = false;
|
||||
return e;
|
||||
}
|
||||
|
||||
pub fn set_terminal_title(self: *Self, text: []const u8) void {
|
||||
self.vx.setTitle(self.tty.anyWriter(), text) catch {};
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue