summaryrefslogtreecommitdiff
path: root/src/server/headless.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-08-01 04:27:50 +0300
committerGitHub <noreply@github.com>2026-08-01 04:27:50 +0300
commitb76adc155d979705a353fd6dc87c702f9dfc6c22 (patch)
treef613254e0cfbfd2b4450a6a5f3ee7c0ba8136976 /src/server/headless.rs
parent8d190eddda2c74afa3dc043f8ec8020ffd7b5a94 (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.rs27
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,
}],
}));