summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2024-02-28 19:10:42 +0100
committerGitHub <noreply@github.com>2024-02-28 19:10:42 +0100
commitde8ecafcd2f26b549082435cd741b3fb8b220165 (patch)
tree620e2eee6ad3d420d53dbd5048a98869d406dfdc
parent7bd77ccc61f30e08ff089a7cc41878e746f6e06b (diff)
fix(panes): no-op on unset fullscreen when no clients are connected (#3166)
* fix(panes): no-op on unset fullscreen when no clients are connected * style(fmt): rustfmt
-rw-r--r--zellij-server/src/panes/tiled_panes/mod.rs57
1 files changed, 30 insertions, 27 deletions
diff --git a/zellij-server/src/panes/tiled_panes/mod.rs b/zellij-server/src/panes/tiled_panes/mod.rs
index 8e594b27f..c54a54fdc 100644
--- a/zellij-server/src/panes/tiled_panes/mod.rs
+++ b/zellij-server/src/panes/tiled_panes/mod.rs
@@ -1571,35 +1571,38 @@ impl TiledPanes {
if self.fullscreen_is_active {
let first_client_id = {
let connected_clients = self.connected_clients.borrow();
- *connected_clients.iter().next().unwrap()
+ connected_clients.iter().next().copied()
};
- let active_pane_id = self.get_active_pane_id(first_client_id).unwrap();
- let panes_to_hide: Vec<_> = self.panes_to_hide.iter().copied().collect();
- for pane_id in panes_to_hide {
- let pane = self.get_pane_mut(pane_id).unwrap();
- pane.set_should_render(true);
- pane.set_should_render_boundaries(true);
- }
- let viewport_pane_ids: Vec<_> = self
- .panes
- .keys()
- .copied()
- .into_iter()
- .filter(|id| {
- !is_inside_viewport(&*self.viewport.borrow(), self.get_pane(*id).unwrap())
- })
- .collect();
- for pid in viewport_pane_ids {
- let viewport_pane = self.get_pane_mut(pid).unwrap();
- viewport_pane.reset_size_and_position_override();
+ if let Some(active_pane_id) =
+ first_client_id.and_then(|first_client_id| self.get_active_pane_id(first_client_id))
+ {
+ let panes_to_hide: Vec<_> = self.panes_to_hide.iter().copied().collect();
+ for pane_id in panes_to_hide {
+ let pane = self.get_pane_mut(pane_id).unwrap();
+ pane.set_should_render(true);
+ pane.set_should_render_boundaries(true);
+ }
+ let viewport_pane_ids: Vec<_> = self
+ .panes
+ .keys()
+ .copied()
+ .into_iter()
+ .filter(|id| {
+ !is_inside_viewport(&*self.viewport.borrow(), self.get_pane(*id).unwrap())
+ })
+ .collect();
+ for pid in viewport_pane_ids {
+ let viewport_pane = self.get_pane_mut(pid).unwrap();
+ viewport_pane.reset_size_and_position_override();
+ }
+ self.panes_to_hide.clear();
+ let active_terminal = self.get_pane_mut(active_pane_id).unwrap();
+ active_terminal.reset_size_and_position_override();
+ self.set_force_render();
+ let display_area = *self.display_area.borrow();
+ self.resize(display_area);
+ self.fullscreen_is_active = false;
}
- self.panes_to_hide.clear();
- let active_terminal = self.get_pane_mut(active_pane_id).unwrap();
- active_terminal.reset_size_and_position_override();
- self.set_force_render();
- let display_area = *self.display_area.borrow();
- self.resize(display_area);
- self.fullscreen_is_active = false;
}
}
pub fn toggle_active_pane_fullscreen(&mut self, client_id: ClientId) {