From 9631f8ee2105c2f6c88248ba6e1a0f9ff21d3708 Mon Sep 17 00:00:00 2001 From: akbash Date: Sun, 13 Sep 2026 15:57:31 +0300 Subject: fix: decouple pixel mouse from pane graphics (#4045) refs #3295 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: JJ Liebig --- src/server/headless/render.rs | 5 +---- src/server/headless/tests/pane_graphics.rs | 18 ++++++------------ 2 files changed, 7 insertions(+), 16 deletions(-) (limited to 'src/server/headless') diff --git a/src/server/headless/render.rs b/src/server/headless/render.rs index 882a1615..87c96964 100644 --- a/src/server/headless/render.rs +++ b/src/server/headless/render.rs @@ -46,10 +46,7 @@ impl HeadlessServer { let child_requests_mouse = focused.is_some_and(|(runtime, _)| runtime.mouse_reporting_enabled()); let sgr_pixels = client.pixel_mouse - && focused.is_some_and(|(runtime, pane_id)| { - self.app.pane_graphics.active_for_pane(pane_id) - && runtime.sgr_pixel_mouse_enabled() - }); + && focused.is_some_and(|(runtime, _)| runtime.sgr_pixel_mouse_enabled()); Some(( client_id, client.shell_surface_active diff --git a/src/server/headless/tests/pane_graphics.rs b/src/server/headless/tests/pane_graphics.rs index 0414b6b3..0b7a8095 100644 --- a/src/server/headless/tests/pane_graphics.rs +++ b/src/server/headless/tests/pane_graphics.rs @@ -594,28 +594,22 @@ fn direct_stream_message( } #[tokio::test] -async fn pixel_mouse_activation_requires_graphics_demand_not_direct_transport() { - let (mut server, _client_rx, pane_id) = +async fn pixel_mouse_activation_follows_child_1016_without_graphics_demand() { + let (mut server, _client_rx, _pane_id) = retained_test_server(b"\x1b[?1003h\x1b[?1006h\x1b[?1016h"); let (writer, control_rx, _render_rx) = test_client_writer(); let client = server.clients.get_mut(&1).unwrap(); client.writer = Some(writer); client.direct_graphics = false; client.pixel_mouse = true; + client.cell_size = crate::kitty_graphics::HostCellSize { + width_px: 10, + height_px: 20, + }; client.host_mouse_capture_active = None; client.host_sgr_pixels_active = None; server.app.direct_graphics_available = false; - server.stream_host_mouse_capture_mode(); - assert!(matches!( - read_server_message(control_rx.recv_timeout(Duration::from_millis(100)).unwrap()), - ServerMessage::MouseCapture { - enabled: true, - sgr_pixels: false - } - )); - - set_graphics_layer(&mut server, pane_id, vec![1, 2, 3]); server.stream_host_mouse_capture_mode(); assert!(matches!( read_server_message(control_rx.recv_timeout(Duration::from_millis(100)).unwrap()), -- cgit v1.2.3