diff options
author | Aram Drevekenin <aram@poor.dev> | 2023-03-01 12:25:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-01 12:25:44 +0100 |
commit | a8b5bce9d9e6c080f3c57735ef689a74eb2124e5 (patch) | |
tree | 0157bf5faf052d8860ce9010b1ab6a80fd3adc2b /zellij-server/src/panes | |
parent | d670c29649307ba575c71e267104f033f8600906 (diff) |
fix(sixel): report pixel size in winsize change ioctl (#2212)
* fix(sixel): report pixel size in winsize change ioctl
* style(fmt): rustfmt
Diffstat (limited to 'zellij-server/src/panes')
-rw-r--r-- | zellij-server/src/panes/floating_panes/mod.rs | 23 | ||||
-rw-r--r-- | zellij-server/src/panes/tiled_panes/mod.rs | 100 |
2 files changed, 103 insertions, 20 deletions
diff --git a/zellij-server/src/panes/floating_panes/mod.rs b/zellij-server/src/panes/floating_panes/mod.rs index 399d16c98..765f0196d 100644 --- a/zellij-server/src/panes/floating_panes/mod.rs +++ b/zellij-server/src/panes/floating_panes/mod.rs @@ -26,7 +26,7 @@ use zellij_utils::{ errors::prelude::*, input::command::RunCommand, input::layout::FloatingPaneLayout, - pane_size::{Dimension, Offset, PaneGeom, Size, Viewport}, + pane_size::{Dimension, Offset, PaneGeom, Size, SizeInPixels, Viewport}, }; const RESIZE_INCREMENT_WIDTH: usize = 5; @@ -39,6 +39,7 @@ pub struct FloatingPanes { connected_clients: Rc<RefCell<HashSet<ClientId>>>, connected_clients_in_app: Rc<RefCell<HashSet<ClientId>>>, mode_info: Rc<RefCell<HashMap<ClientId, ModeInfo>>>, + character_cell_size: Rc<RefCell<Option<SizeInPixels>>>, default_mode_info: ModeInfo, style: Style, session_is_mirrored: bool, @@ -59,6 +60,7 @@ impl FloatingPanes { connected_clients: Rc<RefCell<HashSet<ClientId>>>, connected_clients_in_app: Rc<RefCell<HashSet<ClientId>>>, mode_info: Rc<RefCell<HashMap<ClientId, ModeInfo>>>, + character_cell_size: Rc<RefCell<Option<SizeInPixels>>>, session_is_mirrored: bool, default_mode_info: ModeInfo, style: Style, @@ -72,6 +74,7 @@ impl FloatingPanes { connected_clients, connected_clients_in_app, mode_info, + character_cell_size, session_is_mirrored, default_mode_info, style, @@ -304,7 +307,8 @@ impl FloatingPanes { } else { pane.set_content_offset(Offset::default()); } - resize_pty!(pane, os_api, self.senders).with_context(|| err_context(&pane.pid()))?; + resize_pty!(pane, os_api, self.senders, self.character_cell_size) + .with_context(|| err_context(&pane.pid()))?; } Ok(()) } @@ -390,7 +394,7 @@ impl FloatingPanes { pub fn resize_pty_all_panes(&mut self, os_api: &mut Box<dyn ServerOsApi>) -> Result<()> { for pane in self.panes.values_mut() { - resize_pty!(pane, os_api, self.senders) + resize_pty!(pane, os_api, self.senders, self.character_cell_size) .with_context(|| format!("failed to resize PTY in pane {:?}", pane.pid()))?; } Ok(()) @@ -424,7 +428,8 @@ impl FloatingPanes { .with_context(err_context)?; for pane in self.panes.values_mut() { - resize_pty!(pane, os_api, self.senders).with_context(err_context)?; + resize_pty!(pane, os_api, self.senders, self.character_cell_size) + .with_context(err_context)?; } self.set_force_render(); return Ok(true); @@ -833,7 +838,7 @@ impl FloatingPanes { if let Some(geom) = prev_geom_override { new_position.set_geom_override(geom); } - resize_pty!(new_position, os_api, self.senders).unwrap(); + resize_pty!(new_position, os_api, self.senders, self.character_cell_size).unwrap(); new_position.set_should_render(true); let current_position = self.panes.get_mut(&active_pane_id).unwrap(); @@ -841,7 +846,13 @@ impl FloatingPanes { if let Some(geom) = next_geom_override { current_position.set_geom_override(geom); } - resize_pty!(current_position, os_api, self.senders).unwrap(); + resize_pty!( + current_position, + os_api, + self.senders, + self.character_cell_size + ) + .unwrap(); current_position.set_should_render(true); self.focus_pane_for_all_clients(active_pane_id); } diff --git a/zellij-server/src/panes/tiled_panes/mod.rs b/zellij-server/src/panes/tiled_panes/mod.rs index 28941746e..ac0f8c635 100644 --- a/zellij-server/src/panes/tiled_panes/mod.rs +++ b/zellij-server/src/panes/tiled_panes/mod.rs @@ -300,7 +300,7 @@ impl TiledPanes { } } - resize_pty!(pane, self.os_api, self.senders).unwrap(); + resize_pty!(pane, self.os_api, self.senders, self.character_cell_size).unwrap(); } self.reset_boundaries(); } @@ -781,7 +781,7 @@ impl TiledPanes { } for pane in self.panes.values_mut() { - resize_pty!(pane, self.os_api, self.senders).unwrap(); + resize_pty!(pane, self.os_api, self.senders, self.character_cell_size).unwrap(); } self.reset_boundaries(); } @@ -1071,7 +1071,13 @@ impl TiledPanes { if let Some(geom) = prev_geom_override { new_position.set_geom_override(geom); } - resize_pty!(new_position, self.os_api, self.senders).unwrap(); + resize_pty!( + new_position, + self.os_api, + self.senders, + self.character_cell_size + ) + .unwrap(); new_position.set_should_render(true); let current_position = self.panes.get_mut(&active_pane_id).unwrap(); @@ -1079,7 +1085,13 @@ impl TiledPanes { if let Some(geom) = next_geom_override { current_position.set_geom_override(geom); } - resize_pty!(current_position, self.os_api, self.senders).unwrap(); + resize_pty!( + current_position, + self.os_api, + self.senders, + self.character_cell_size + ) + .unwrap(); current_position.set_should_render(true); self.focus_pane_for_all_clients(active_pane_id); self.set_pane_frames(self.draw_pane_frames); @@ -1123,7 +1135,13 @@ impl TiledPanes { if let Some(geom) = prev_geom_override { new_position.set_geom_override(geom); } - resize_pty!(new_position, self.os_api, self.senders).unwrap(); + resize_pty!( + new_position, + self.os_api, + self.senders, + self.character_cell_size + ) + .unwrap(); new_position.set_should_render(true); let current_position = self.panes.get_mut(&active_pane_id).unwrap(); @@ -1131,7 +1149,13 @@ impl TiledPanes { if let Some(geom) = next_geom_override { current_position.set_geom_override(geom); } - resize_pty!(current_position, self.os_api, self.senders).unwrap(); + resize_pty!( + current_position, + self.os_api, + self.senders, + self.character_cell_size + ) + .unwrap(); current_position.set_should_render(true); self.set_pane_frames(self.draw_pane_frames); } @@ -1159,7 +1183,13 @@ impl TiledPanes { if let Some(geom) = prev_geom_override { new_position.set_geom_override(geom); } - resize_pty!(new_position, self.os_api, self.senders).unwrap(); + resize_pty!( + new_position, + self.os_api, + self.senders, + self.character_cell_size + ) + .unwrap(); new_position.set_should_render(true); let current_position = self.panes.get_mut(active_pane_id).unwrap(); @@ -1167,7 +1197,13 @@ impl TiledPanes { if let Some(geom) = next_geom_override { current_position.set_geom_override(geom); } - resize_pty!(current_position, self.os_api, self.senders).unwrap(); + resize_pty!( + current_position, + self.os_api, + self.senders, + self.character_cell_size + ) + .unwrap(); current_position.set_should_render(true); self.set_pane_frames(self.draw_pane_frames); } @@ -1195,7 +1231,13 @@ impl TiledPanes { if let Some(geom) = prev_geom_override { new_position.set_geom_override(geom); } - resize_pty!(new_position, self.os_api, self.senders).unwrap(); + resize_pty!( + new_position, + self.os_api, + self.senders, + self.character_cell_size + ) + .unwrap(); new_position.set_should_render(true); let current_position = self.panes.get_mut(active_pane_id).unwrap(); @@ -1203,7 +1245,13 @@ impl TiledPanes { if let Some(geom) = next_geom_override { current_position.set_geom_override(geom); } - resize_pty!(current_position, self.os_api, self.senders).unwrap(); + resize_pty!( + current_position, + self.os_api, + self.senders, + self.character_cell_size + ) + .unwrap(); current_position.set_should_render(true); self.set_pane_frames(self.draw_pane_frames); } @@ -1231,7 +1279,13 @@ impl TiledPanes { if let Some(geom) = prev_geom_override { new_position.set_geom_override(geom); } - resize_pty!(new_position, self.os_api, self.senders).unwrap(); + resize_pty!( + new_position, + self.os_api, + self.senders, + self.character_cell_size + ) + .unwrap(); new_position.set_should_render(true); let current_position = self.panes.get_mut(active_pane_id).unwrap(); @@ -1239,7 +1293,13 @@ impl TiledPanes { if let Some(geom) = next_geom_override { current_position.set_geom_override(geom); } - resize_pty!(current_position, self.os_api, self.senders).unwrap(); + resize_pty!( + current_position, + self.os_api, + self.senders, + self.character_cell_size + ) + .unwrap(); current_position.set_should_render(true); self.set_pane_frames(self.draw_pane_frames); } @@ -1269,7 +1329,13 @@ impl TiledPanes { if let Some(geom) = prev_geom_override { new_position.set_geom_override(geom); } - resize_pty!(new_position, self.os_api, self.senders).unwrap(); + resize_pty!( + new_position, + self.os_api, + self.senders, + self.character_cell_size + ) + .unwrap(); new_position.set_should_render(true); let current_position = self.panes.get_mut(active_pane_id).unwrap(); @@ -1277,7 +1343,13 @@ impl TiledPanes { if let Some(geom) = next_geom_override { current_position.set_geom_override(geom); } - resize_pty!(current_position, self.os_api, self.senders).unwrap(); + resize_pty!( + current_position, + self.os_api, + self.senders, + self.character_cell_size + ) + .unwrap(); current_position.set_should_render(true); self.set_pane_frames(self.draw_pane_frames); } |