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),
|
text orelse input.utils.key_id_string(key_.base_layout_codepoint orelse key_.codepoint),
|
||||||
@as(u8, @bitCast(key_.mods)),
|
@as(u8, @bitCast(key_.mods)),
|
||||||
});
|
});
|
||||||
if (self.bracketed_paste and self.handle_bracketed_paste_input(cbor_msg) catch |e| {
|
if (self.bracketed_paste and self.handle_bracketed_paste_input(cbor_msg) catch |e| return self.handle_bracketed_paste_error(e)) {
|
||||||
self.bracketed_paste_buffer.clearAndFree();
|
// we have stored it to handle on .paste_end, so do nothing more here
|
||||||
self.bracketed_paste = false;
|
} else if (self.dispatch_input) |f| f(self.handler_ctx, cbor_msg);
|
||||||
return e;
|
|
||||||
}) {} else if (self.dispatch_input) |f| f(self.handler_ctx, cbor_msg);
|
|
||||||
},
|
},
|
||||||
.key_release => |key__| {
|
.key_release => |key__| {
|
||||||
const key_ = filter_mods(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 => {
|
.focus_out => {
|
||||||
if (self.dispatch_event) |f| f(self.handler_ctx, try self.fmtmsg(.{"focus_out"}));
|
if (self.dispatch_event) |f| f(self.handler_ctx, try self.fmtmsg(.{"focus_out"}));
|
||||||
},
|
},
|
||||||
.paste_start => {
|
.paste_start => try self.handle_bracketed_paste_start(),
|
||||||
self.bracketed_paste = true;
|
|
||||||
self.bracketed_paste_buffer.clearRetainingCapacity();
|
|
||||||
},
|
|
||||||
.paste_end => try self.handle_bracketed_paste_end(),
|
.paste_end => try self.handle_bracketed_paste_end(),
|
||||||
.paste => |_| {
|
.paste => |_| {
|
||||||
if (self.dispatch_event) |f| f(self.handler_ctx, try self.fmtmsg(.{ "system_clipboard", text }));
|
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;
|
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 {
|
fn handle_bracketed_paste_end(self: *Self) !void {
|
||||||
defer self.bracketed_paste_buffer.clearAndFree();
|
defer {
|
||||||
if (!self.bracketed_paste) return;
|
self.bracketed_paste_buffer.clearAndFree();
|
||||||
self.bracketed_paste = false;
|
self.bracketed_paste = false;
|
||||||
|
}
|
||||||
|
if (!self.bracketed_paste) return;
|
||||||
if (self.dispatch_event) |f| f(self.handler_ctx, try self.fmtmsg(.{ "system_clipboard", self.bracketed_paste_buffer.items }));
|
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 {
|
pub fn set_terminal_title(self: *Self, text: []const u8) void {
|
||||||
self.vx.setTitle(self.tty.anyWriter(), text) catch {};
|
self.vx.setTitle(self.tty.anyWriter(), text) catch {};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue