diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-08-01 04:27:50 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-01 04:27:50 +0300 |
| commit | b76adc155d979705a353fd6dc87c702f9dfc6c22 (patch) | |
| tree | f613254e0cfbfd2b4450a6a5f3ee7c0ba8136976 /src/server/headless.rs | |
| parent | 8d190eddda2c74afa3dc043f8ec8020ffd7b5a94 (diff) | |
fix(input): preserve native key lifecycle across routing (#2142)
refs #2077
Co-authored-by: Jonathan Liebig <jonathan.liebig@gmail.com>
Diffstat (limited to 'src/server/headless.rs')
| -rw-r--r-- | src/server/headless.rs | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/server/headless.rs b/src/server/headless.rs index 6fdb83ce..ff85f253 100644 --- a/src/server/headless.rs +++ b/src/server/headless.rs @@ -4544,6 +4544,7 @@ fn events_for_app_routing( } crate::raw_input::RawInputEvent::OuterFocusLost if !source_is_foreground => None, crate::raw_input::RawInputEvent::Key(_) + | crate::raw_input::RawInputEvent::Text(_) | crate::raw_input::RawInputEvent::Mouse(_) | crate::raw_input::RawInputEvent::Paste(_) => { source_is_foreground = true; @@ -7539,6 +7540,10 @@ next_tab = "" code: crate::protocol::ClientKeyCode::Char('j'), modifiers: 0, kind: crate::protocol::ClientKeyKind::Press, + + repeat_count: 1, + generated_text: None, + source: crate::protocol::ClientKeySource::Synthesized, }], })); server.foreground_client_id = Some(2); @@ -7558,7 +7563,7 @@ next_tab = "" .expect("synthetic release from background client"), Bytes::from_static(b"\x1b[106;1:3u") ); - assert!(server.app.pressed_terminal_keys.is_empty()); + assert!(server.app.input_leases.is_empty()); } #[tokio::test] @@ -7602,6 +7607,10 @@ next_tab = "" code: crate::protocol::ClientKeyCode::Char('x'), modifiers: 0, kind: crate::protocol::ClientKeyKind::Release, + + repeat_count: 1, + generated_text: None, + source: crate::protocol::ClientKeySource::Synthesized, }, crate::protocol::ClientInputEvent::FocusLost, ], @@ -7652,6 +7661,10 @@ next_tab = "" code: crate::protocol::ClientKeyCode::Char('x'), modifiers: 0, kind: crate::protocol::ClientKeyKind::Release, + + repeat_count: 1, + generated_text: None, + source: crate::protocol::ClientKeySource::Synthesized, }], })); assert_eq!(server.foreground_client_id, Some(3)); @@ -7863,6 +7876,10 @@ next_tab = "" code: crate::protocol::ClientKeyCode::Enter, modifiers: 0, kind: crate::protocol::ClientKeyKind::Press, + + repeat_count: 1, + generated_text: None, + source: crate::protocol::ClientKeySource::Synthesized, }], })); @@ -7899,6 +7916,10 @@ next_tab = "" code: crate::protocol::ClientKeyCode::Esc, modifiers: 0, kind: crate::protocol::ClientKeyKind::Press, + + repeat_count: 1, + generated_text: None, + source: crate::protocol::ClientKeySource::Synthesized, }], })); @@ -7932,6 +7953,10 @@ next_tab = "" code: crate::protocol::ClientKeyCode::Down, modifiers: 0, kind: crate::protocol::ClientKeyKind::Press, + + repeat_count: 1, + generated_text: None, + source: crate::protocol::ClientKeySource::Synthesized, }], })); |
