diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-09-02 22:45:51 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-02 22:45:51 +0300 |
| commit | e22cba35ef7b405758097a5f9436aae8fb4caaf0 (patch) | |
| tree | a25cf28ad45a3b34c4dc25d54e3095f6c8be2b3a /src/kitty_graphics.rs | |
| parent | 5a2dee700eeeea68267a4d16777307632f77172f (diff) | |
fix: keep direct graphics bound to its client (#3549)
Diffstat (limited to 'src/kitty_graphics.rs')
| -rw-r--r-- | src/kitty_graphics.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/kitty_graphics.rs b/src/kitty_graphics.rs index 37bae34e..2eca21f5 100644 --- a/src/kitty_graphics.rs +++ b/src/kitty_graphics.rs @@ -502,6 +502,7 @@ fn collect_visible_placements( cell_size: HostCellSize, uploaded_images: &HashMap<u32, ImageSignature>, oversized_images: &HashMap<HostSourceKey, ImageSignature>, + client_id: u64, ) -> Vec<HostPlacement> { let Some(target) = surface.target else { tracing::debug!("collect_visible_placements: no tab surface target"); @@ -536,9 +537,10 @@ fn collect_visible_placements( .filter_map(|((pane_id, layer_id), slot)| { (*pane_id == info.id) .then(|| { - slot.layer - .as_ref() - .map(|layer| (layer_id, slot.host_image_id, layer)) + slot.layer.as_ref().and_then(|layer| { + (!layer.terminal_only() || slot.direct_client() == Some(client_id)) + .then_some((layer_id, slot.host_image_id, layer)) + }) }) .flatten() }) |
