diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-08-13 17:21:26 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-13 17:21:26 +0300 |
| commit | b7dca4bb2a2cf488407ae051b40782f03fcabc62 (patch) | |
| tree | 12ba75991215634676b49f0feb6eafa1d31ac230 /src/ghostty/mod.rs | |
| parent | 952729ee03e0939d7a9d893f87f24179cf0eb7cb (diff) | |
fix(graphics): support high-dpi direct file frames (#2680)
Diffstat (limited to 'src/ghostty/mod.rs')
| -rw-r--r-- | src/ghostty/mod.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/ghostty/mod.rs b/src/ghostty/mod.rs index 4dead632..cea7c283 100644 --- a/src/ghostty/mod.rs +++ b/src/ghostty/mod.rs @@ -3488,6 +3488,43 @@ mod tests { let _ = std::fs::remove_dir_all(dir); } + #[cfg(unix)] + #[test] + fn kitty_graphics_file_upload_can_be_placed_later() { + let dir = std::env::temp_dir().join(format!( + "herdr-kitty-file-upload-test-{}", + std::process::id() + )); + std::fs::create_dir_all(&dir).unwrap(); + let path = dir.join("pixel.rgba"); + std::fs::write(&path, [255, 0, 0, 255]).unwrap(); + + let mut terminal = Terminal::new(10, 5, 0).unwrap(); + terminal.enable_kitty_graphics().unwrap(); + terminal.resize(10, 5, 8, 16).unwrap(); + let mut upload = Vec::new(); + crate::kitty_graphics::encode_kitty_regular_file( + &mut upload, + &[], + "a=t,f=32,s=1,v=1,i=10,q=0", + path.to_str().unwrap(), + ); + terminal.write(&upload); + assert!(terminal.kitty_image_placements().unwrap().is_empty()); + + terminal.write(b"\x1b_Ga=p,i=10,p=5,c=10,r=5,C=1,q=2\x1b\\"); + let placements = terminal.kitty_image_placements().unwrap(); + assert_eq!(placements.len(), 1); + assert_eq!(placements[0].image_id, 10); + assert_eq!(placements[0].placement_id, 5); + assert_eq!(placements[0].image_width, 1); + assert_eq!(placements[0].image_height, 1); + assert_eq!(placements[0].format, KittyImageFormat::Rgba); + assert_eq!(placements[0].data, [255, 0, 0, 255]); + + let _ = std::fs::remove_dir_all(dir); + } + #[test] fn kitty_graphics_unicode_placeholder_placement_is_queryable() { let mut terminal = Terminal::new(10, 5, 0).unwrap(); |
