diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-09-27 20:29:49 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-27 20:29:49 +0300 |
| commit | 0d1a39dcee6a0f244a036c55935970f40cfa76b8 (patch) | |
| tree | b36e41bc3dfb71041e5fa2502c0457e37aea417f /src/server | |
| parent | 316d176768e99bd80b81696c4e1f310f0643e744 (diff) | |
feat: accept mouse events on terminal session control (#4685)
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/headless/tests/mod.rs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/server/headless/tests/mod.rs b/src/server/headless/tests/mod.rs index 34258dd3..4def3fa4 100644 --- a/src/server/headless/tests/mod.rs +++ b/src/server/headless/tests/mod.rs @@ -6310,6 +6310,52 @@ fn direct_terminal_mouse_uses_runtime_protocol_encoding() { } #[test] +fn direct_terminal_mouse_sends_nothing_without_mouse_reporting() { + with_terminal_session_test_server(|server, runtime_terminal_id, terminal_id, _pane_id| { + // A plain shell never enabled mouse reporting, so a controller's click + // must not reach it as stray escape bytes. + let (runtime, mut input_rx) = + crate::terminal::TerminalRuntime::test_with_channel_and_scrollback_bytes( + 80, 24, 0, b"", 4, + ); + server + .app + .terminal_runtimes + .insert(runtime_terminal_id, runtime); + server.clients.insert( + 1, + ClientConnection::new_with_mode( + ClientConnectionMode::TerminalAttach { + terminal_id: terminal_id.clone(), + }, + (80, 24), + crate::kitty_graphics::HostCellSize::default(), + 1, + RenderEncoding::TerminalAnsi, + None, + ), + ); + + for kind in [ + protocol::ClientMouseKind::Down(protocol::ClientMouseButton::Left), + protocol::ClientMouseKind::Drag(protocol::ClientMouseButton::Left), + protocol::ClientMouseKind::Up(protocol::ClientMouseButton::Left), + protocol::ClientMouseKind::Moved, + ] { + server.handle_server_event(ServerEvent::ClientAttachMouse { + client_id: 1, + kind, + position: protocol::ClientMousePosition::Cell { column: 10, row: 5 }, + geometry: None, + modifiers: 0, + lines: 1, + }); + } + assert!(input_rx.try_recv().is_err()); + }); +} + +#[test] fn direct_terminal_pixel_mouse_uses_runtime_tracking_and_coordinates() { with_terminal_session_test_server(|server, runtime_terminal_id, terminal_id, _pane_id| { let (runtime, mut input_rx) = |
