summaryrefslogtreecommitdiffstats
path: root/zellij-server/src/panes
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2023-02-27 19:15:45 +0100
committerGitHub <noreply@github.com>2023-02-27 19:15:45 +0100
commitb3b0ddbab82ab74c02dbc991b24f4a3c88f2bcbe (patch)
treedbfb33b8f2a737918a913fc4ef557406708dfa3e /zellij-server/src/panes
parent4d1b12754363306ecbdcdba52986b7e92fc522c3 (diff)
fix(layouts): do not relayout twice on auto_layout (#2202)
* fix(layouts): do not relayout twice on auto_layout * style(fmt): rustfmt
Diffstat (limited to 'zellij-server/src/panes')
-rw-r--r--zellij-server/src/panes/tiled_panes/mod.rs38
1 files changed, 24 insertions, 14 deletions
diff --git a/zellij-server/src/panes/tiled_panes/mod.rs b/zellij-server/src/panes/tiled_panes/mod.rs
index 8ab5cb4f9..28941746e 100644
--- a/zellij-server/src/panes/tiled_panes/mod.rs
+++ b/zellij-server/src/panes/tiled_panes/mod.rs
@@ -160,7 +160,27 @@ impl TiledPanes {
self.move_clients_between_panes(pane_id, with_pane_id);
removed_pane
}
- pub fn insert_pane(&mut self, pane_id: PaneId, mut pane: Box<dyn Pane>) {
+ pub fn insert_pane(&mut self, pane_id: PaneId, pane: Box<dyn Pane>) {
+ let should_relayout = true;
+ self.add_pane(pane_id, pane, should_relayout);
+ }
+ pub fn insert_pane_without_relayout(&mut self, pane_id: PaneId, pane: Box<dyn Pane>) {
+ let should_relayout = false;
+ self.add_pane(pane_id, pane, should_relayout);
+ }
+ pub fn has_room_for_new_pane(&mut self) -> bool {
+ let cursor_height_width_ratio = self.cursor_height_width_ratio();
+ let pane_grid = TiledPaneGrid::new(
+ &mut self.panes,
+ &self.panes_to_hide,
+ *self.display_area.borrow(),
+ *self.viewport.borrow(),
+ );
+ pane_grid
+ .find_room_for_new_pane(cursor_height_width_ratio)
+ .is_some()
+ }
+ fn add_pane(&mut self, pane_id: PaneId, mut pane: Box<dyn Pane>, should_relayout: bool) {
let cursor_height_width_ratio = self.cursor_height_width_ratio();
let pane_grid = TiledPaneGrid::new(
&mut self.panes,
@@ -178,22 +198,12 @@ impl TiledPanes {
pane_to_split.set_geom(first_geom);
pane.set_geom(second_geom);
self.panes.insert(pane_id, pane);
- self.relayout(!split_direction);
+ if should_relayout {
+ self.relayout(!split_direction);
+ }
}
}
}
- pub fn has_room_for_new_pane(&mut self) -> bool {
- let cursor_height_width_ratio = self.cursor_height_width_ratio();
- let pane_grid = TiledPaneGrid::new(
- &mut self.panes,
- &self.panes_to_hide,
- *self.display_area.borrow(),
- *self.viewport.borrow(),
- );
- pane_grid
- .find_room_for_new_pane(cursor_height_width_ratio)
- .is_some()
- }
pub fn fixed_pane_geoms(&self) -> Vec<Viewport> {
self.panes
.values()