feat: make shortcut works even with capslock (#5049)
Shortcut where not working in caps-lock. Fixing this
This commit is contained in:
@@ -213,7 +213,7 @@ async fn shell_output_reserializes_truncated_content() -> Result<()> {
|
|||||||
let call_id = "shell-truncated";
|
let call_id = "shell-truncated";
|
||||||
let args = json!({
|
let args = json!({
|
||||||
"command": ["/bin/sh", "-c", "seq 1 400"],
|
"command": ["/bin/sh", "-c", "seq 1 400"],
|
||||||
"timeout_ms": 1_000,
|
"timeout_ms": 5_000,
|
||||||
});
|
});
|
||||||
let responses = vec![
|
let responses = vec![
|
||||||
sse(vec![
|
sse(vec![
|
||||||
|
|||||||
@@ -1034,20 +1034,20 @@ impl ChatWidget {
|
|||||||
pub(crate) fn handle_key_event(&mut self, key_event: KeyEvent) {
|
pub(crate) fn handle_key_event(&mut self, key_event: KeyEvent) {
|
||||||
match key_event {
|
match key_event {
|
||||||
KeyEvent {
|
KeyEvent {
|
||||||
code: KeyCode::Char('c'),
|
code: KeyCode::Char(c),
|
||||||
modifiers: crossterm::event::KeyModifiers::CONTROL,
|
modifiers,
|
||||||
kind: KeyEventKind::Press,
|
kind: KeyEventKind::Press,
|
||||||
..
|
..
|
||||||
} => {
|
} if modifiers.contains(KeyModifiers::CONTROL) && c.eq_ignore_ascii_case(&'c') => {
|
||||||
self.on_ctrl_c();
|
self.on_ctrl_c();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
KeyEvent {
|
KeyEvent {
|
||||||
code: KeyCode::Char('v'),
|
code: KeyCode::Char(c),
|
||||||
modifiers: KeyModifiers::CONTROL,
|
modifiers,
|
||||||
kind: KeyEventKind::Press,
|
kind: KeyEventKind::Press,
|
||||||
..
|
..
|
||||||
} => {
|
} if modifiers.contains(KeyModifiers::CONTROL) && c.eq_ignore_ascii_case(&'v') => {
|
||||||
if let Ok((path, info)) = paste_image_to_temp_png() {
|
if let Ok((path, info)) = paste_image_to_temp_png() {
|
||||||
self.attach_image(path, info.width, info.height, info.encoded_format.label());
|
self.attach_image(path, info.width, info.height, info.encoded_format.label());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -676,6 +676,18 @@ fn streaming_final_answer_keeps_task_running_state() {
|
|||||||
assert!(chat.bottom_pane.ctrl_c_quit_hint_visible());
|
assert!(chat.bottom_pane.ctrl_c_quit_hint_visible());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn ctrl_c_shutdown_ignores_caps_lock() {
|
||||||
|
let (mut chat, _rx, mut op_rx) = make_chatwidget_manual();
|
||||||
|
|
||||||
|
chat.handle_key_event(KeyEvent::new(KeyCode::Char('C'), KeyModifiers::CONTROL));
|
||||||
|
|
||||||
|
match op_rx.try_recv() {
|
||||||
|
Ok(Op::Shutdown) => {}
|
||||||
|
other => panic!("expected Op::Shutdown, got {other:?}"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn exec_history_cell_shows_working_then_completed() {
|
fn exec_history_cell_shows_working_then_completed() {
|
||||||
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual();
|
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual();
|
||||||
|
|||||||
Reference in New Issue
Block a user