mirror of https://github.com/lapce/lapce.git
Merge pull request #425 from bugadani/term
Don't allocate in terminal key handling
This commit is contained in:
commit
9a8266ede9
|
@ -194,7 +194,8 @@ fn paint(&mut self, ctx: &mut PaintCtx, data: &LapceTabData, env: &Env) {
|
||||||
let rect = ctx.size().to_rect();
|
let rect = ctx.size().to_rect();
|
||||||
ctx.fill(
|
ctx.fill(
|
||||||
rect,
|
rect,
|
||||||
data.config.get_color_unchecked(LapceTheme::TERMINAL_BACKGROUND),
|
data.config
|
||||||
|
.get_color_unchecked(LapceTheme::TERMINAL_BACKGROUND),
|
||||||
);
|
);
|
||||||
self.split.paint(ctx, data, env);
|
self.split.paint(ctx, data, env);
|
||||||
}
|
}
|
||||||
|
@ -579,9 +580,11 @@ fn event(
|
||||||
&mut term_data,
|
&mut term_data,
|
||||||
env,
|
env,
|
||||||
) {
|
) {
|
||||||
|
// 4 byte buffer used to store encoded characters.
|
||||||
|
let mut char_buffer = [0; 4];
|
||||||
let s = match &key_event.key {
|
let s = match &key_event.key {
|
||||||
KbKey::Character(c) => {
|
KbKey::Character(c) => {
|
||||||
let mut s = "".to_string();
|
let mut s = "";
|
||||||
let mut mods = key_event.mods;
|
let mut mods = key_event.mods;
|
||||||
if mods.ctrl() {
|
if mods.ctrl() {
|
||||||
mods.set(Modifiers::CONTROL, false);
|
mods.set(Modifiers::CONTROL, false);
|
||||||
|
@ -592,21 +595,21 @@ fn event(
|
||||||
{
|
{
|
||||||
s = char::from_u32(i as u32)
|
s = char::from_u32(i as u32)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.to_string()
|
.encode_utf8(&mut char_buffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
s
|
s
|
||||||
}
|
}
|
||||||
KbKey::Backspace => "\x08".to_string(),
|
KbKey::Backspace => "\x08",
|
||||||
KbKey::Tab => "\x09".to_string(),
|
KbKey::Tab => "\x09",
|
||||||
KbKey::Enter => "\r".to_string(),
|
KbKey::Enter => "\r",
|
||||||
KbKey::Escape => "\x1b".to_string(),
|
KbKey::Escape => "\x1b",
|
||||||
_ => "".to_string(),
|
_ => "",
|
||||||
};
|
};
|
||||||
if term_data.terminal.mode == Mode::Terminal && !s.is_empty() {
|
if term_data.terminal.mode == Mode::Terminal && !s.is_empty() {
|
||||||
term_data.receive_char(ctx, &s);
|
term_data.receive_char(ctx, s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ctx.set_handled();
|
ctx.set_handled();
|
||||||
|
|
Loading…
Reference in New Issue