diff options
author | Aram Drevekenin <aram@poor.dev> | 2023-02-14 17:35:16 +0100 |
---|---|---|
committer | Aram Drevekenin <aram@poor.dev> | 2023-02-14 17:35:16 +0100 |
commit | 5dd319c8528ee5f25580baee94596e639513f3b9 (patch) | |
tree | 1cba209ab3deefff48508d599f7a344f097ffd11 | |
parent | 84c3e9394bfb3c11ff395fa58aa2385aa55eb9ae (diff) |
fix(ui): stacked panes without pane frames
10 files changed, 204 insertions, 65 deletions
diff --git a/zellij-server/src/panes/floating_panes/mod.rs b/zellij-server/src/panes/floating_panes/mod.rs index 73388f27b..77abda645 100644 --- a/zellij-server/src/panes/floating_panes/mod.rs +++ b/zellij-server/src/panes/floating_panes/mod.rs @@ -353,7 +353,8 @@ impl FloatingPanes { multiple_users_exist_in_session, Some(z_index + 1), // +1 because 0 is reserved for non-floating panes false, - false + false, + true, ); for client_id in &connected_clients { let client_mode = self diff --git a/zellij-server/src/panes/plugin_pane.rs b/zellij-server/src/panes/plugin_pane.rs index 50ce6043e..841104214 100644 --- a/zellij-server/src/panes/plugin_pane.rs +++ b/zellij-server/src/panes/plugin_pane.rs @@ -226,6 +226,11 @@ impl Pane for PluginPane { if self.should_render.get(&client_id).copied().unwrap_or(false) { let content_x = self.get_content_x(); let content_y = self.get_content_y(); + let rows = self.get_content_rows(); + let columns = self.get_content_columns(); + if rows < 1 || columns < 1 { + return Ok(None); + } if let Some(grid) = self.grids.get_mut(&client_id) { match grid.render(content_x, content_y, &self.style) { Ok(rendered_assets) => { @@ -269,8 +274,13 @@ impl Pane for PluginPane { self.pane_name.clone() }; + let mut frame_geom = self.current_geom(); + if !frame_params.should_draw_pane_frames { + // in this case the width of the frame needs not include the pane corners + frame_geom.cols.set_inner(frame_geom.cols.as_usize().saturating_sub(1)); + } let mut frame = PaneFrame::new( - self.current_geom().into(), + frame_geom.into(), grid.scrollback_position_and_length(), pane_title, frame_params, diff --git a/zellij-server/src/panes/terminal_pane.rs b/zellij-server/src/panes/terminal_pane.rs index 065e99c00..960476d5e 100644 --- a/zellij-server/src/panes/terminal_pane.rs +++ b/zellij-server/src/panes/terminal_pane.rs @@ -359,8 +359,13 @@ impl Pane for TerminalPane { self.pane_name.clone() }; + let mut frame_geom = self.current_geom(); + if !frame_params.should_draw_pane_frames { + // in this case the width of the frame needs not include the pane corners + frame_geom.cols.set_inner(frame_geom.cols.as_usize().saturating_sub(1)); + } let mut frame = PaneFrame::new( - self.current_geom().into(), + frame_geom.into(), self.grid.scrollback_position_and_length(), pane_title, frame_params, diff --git a/zellij-server/src/panes/tiled_panes/mod.rs b/zellij-server/src/panes/tiled_panes/mod.rs index f4619ad66..dca3afd84 100644 --- a/zellij-server/src/panes/tiled_panes/mod.rs +++ b/zellij-server/src/panes/tiled_panes/mod.rs @@ -283,7 +283,12 @@ impl TiledPanes { let position_and_size = pane.current_geom(); let (pane_columns_offset, pane_rows_offset) = pane_content_offset(&position_and_size, &viewport); - pane.set_content_offset(Offset::shift(pane_rows_offset, pane_columns_offset)); + if !draw_pane_frames && pane.current_geom().is_stacked { + // stacked panes should always leave 1 top row for a title + pane.set_content_offset(Offset::shift_right_and_top(pane_columns_offset, 1)); + } else { + pane.set_content_offset(Offset::shift(pane_rows_offset, pane_columns_offset)); + } } resize_pty!(pane, self.os_api, self.senders).unwrap(); @@ -533,6 +538,8 @@ impl TiledPanes { if !self.panes_to_hide.contains(&pane.pid()) { let pane_is_stacked_under = stacked_pane_ids_under_flexible_pane.contains(&pane.pid()); let pane_is_stacked_over = stacked_pane_ids_over_flexible_pane.contains(&pane.pid()); + let should_draw_pane_frames = self.draw_pane_frames; + let pane_is_stacked = pane.current_geom().is_stacked; let mut pane_contents_and_ui = PaneContentsAndUi::new( pane, output, @@ -542,6 +549,7 @@ impl TiledPanes { None, pane_is_stacked_under, pane_is_stacked_over, + should_draw_pane_frames, ); for client_id in &connected_clients { let client_mode = self @@ -561,6 +569,22 @@ impl TiledPanes { pane_contents_and_ui .render_pane_frame(*client_id, client_mode, self.session_is_mirrored) .with_context(err_context)?; + } else if pane_is_stacked { + // if we have no pane frames but the pane is stacked, we need to render its + // frame which will amount to only rendering the title line + pane_contents_and_ui + .render_pane_frame(*client_id, client_mode, self.session_is_mirrored) + .with_context(err_context)?; + // we also need to render its boundaries as normal + let boundaries = client_id_to_boundaries + .entry(*client_id) + .or_insert_with(|| Boundaries::new(*self.viewport.borrow())); + pane_contents_and_ui.render_pane_boundaries( + *client_id, + client_mode, + boundaries, + self.session_is_mirrored, + ); } else { let boundaries = client_id_to_boundaries .entry(*client_id) diff --git a/zellij-server/src/tab/unit/snapshots/zellij_server__tab__tab_integration_tests__swap_tiled_layout_with_stacked_children_and_no_pane_frames.snap b/zellij-server/src/tab/unit/snapshots/zellij_server__tab__tab_integration_tests__swap_tiled_layout_with_stacked_children_and_no_pane_frames.snap new file mode 100644 index 000000000..7174f10a2 --- /dev/null +++ b/zellij-server/src/tab/unit/snapshots/zellij_server__tab__tab_integration_tests__swap_tiled_layout_with_stacked_children_and_no_pane_frames.snap @@ -0,0 +1,26 @@ +--- +source: zellij-server/src/tab/./unit/tab_integration_tests.rs +assertion_line: 3204 +expression: snapshot +--- +00 (C): ├─ Pane #2 ───────────────────────────────────────────────── +01 (C): ├─ Pane #3 ───────────────────────────────────────────────── +02 (C): ├─ Pane #4 ───────────────────────────────────────────────── +03 (C): │ +04 (C): │ +05 (C): │ +06 (C): │ +07 (C): │ +08 (C): │ +09 (C): │ +10 (C): │ +11 (C): │ +12 (C): │ +13 (C): │ +14 (C): │ +15 (C): │ +16 (C): │ +17 (C): │ +18 (C): │ +19 (C): │ + diff --git a/zellij-server/src/tab/unit/tab_integration_tests.rs b/zellij-server/src/tab/unit/tab_integration_tests.rs index 172bda15a..73e266955 100644 --- a/zellij-server/src/tab/unit/tab_integration_tests.rs +++ b/zellij-server/src/tab/unit/tab_integration_tests.rs @@ -257,7 +257,8 @@ fn create_new_tab_with_swap_layouts( Vec<(u32, Option<RunCommand>)>, Vec<(u32, Option<RunCommand>)>, HashMap<RunPluginLocation, Vec<u32>> - )> + )>, + draw_pane_frames: bool, ) -> Tab { set_session_name("test".into()); let index = 0; @@ -271,7 +272,6 @@ fn create_new_tab_with_swap_layouts( let max_panes = None; let mode_info = default_mode; let style = Style::default(); - let draw_pane_frames = true; let auto_layout = true; let client_id = 1; let session_is_mirrored = true; @@ -3002,7 +3002,7 @@ fn can_swap_tiled_layout_at_runtime() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); tab.new_pane(new_pane_id_1, None, None, Some(client_id)) @@ -3049,7 +3049,7 @@ fn can_swap_floating_layout_at_runtime() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); @@ -3098,7 +3098,7 @@ fn swapping_layouts_after_resize_snaps_to_current_layout() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); tab.new_pane(new_pane_id_1, None, None, Some(client_id)) @@ -3139,7 +3139,51 @@ fn swap_tiled_layout_with_stacked_children() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); + let new_pane_id_1 = PaneId::Terminal(2); + let new_pane_id_2 = PaneId::Terminal(3); + let new_pane_id_3 = PaneId::Terminal(4); + + tab.new_pane(new_pane_id_1, None, None, Some(client_id)) + .unwrap(); + tab.new_pane(new_pane_id_2, None, None, Some(client_id)) + .unwrap(); + tab.new_pane(new_pane_id_3, None, None, Some(client_id)) + .unwrap(); + tab.render(&mut output, None).unwrap(); + let snapshot = take_snapshot( + output.serialize().unwrap().get(&client_id).unwrap(), + size.rows, + size.cols, + Palette::default(), + ); + assert_snapshot!(snapshot); +} + +#[test] +fn swap_tiled_layout_with_stacked_children_and_no_pane_frames() { + let size = Size { + cols: 121, + rows: 20, + }; + let client_id = 1; + let mut output = Output::default(); + let swap_layouts = r#" + layout { + swap_tiled_layout { + tab { + pane split_direction="vertical" { + pane focus=true + pane { children stacked=true; } + } + } + } + } + "#; + let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); + let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); + let swap_floating_layouts = layout.swap_floating_layouts.clone(); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, false); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -3183,7 +3227,7 @@ fn move_focus_up_with_stacked_panes() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -3229,7 +3273,7 @@ fn move_focus_down_with_stacked_panes() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -3279,7 +3323,7 @@ fn move_focus_right_into_stacked_panes() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); for i in 0..12 { let new_pane_id = i + 2; tab.new_pane(PaneId::Terminal(new_pane_id), None, None, Some(client_id)) @@ -3333,7 +3377,7 @@ fn move_focus_left_into_stacked_panes() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); for i in 0..13 { let new_pane_id = i + 2; tab.new_pane(PaneId::Terminal(new_pane_id), None, None, Some(client_id)) @@ -3389,7 +3433,7 @@ fn move_focus_up_into_stacked_panes() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); for i in 0..4 { let new_pane_id = i + 3; tab.new_pane(PaneId::Terminal(new_pane_id), None, None, Some(client_id)) @@ -3446,7 +3490,7 @@ fn move_focus_down_into_stacked_panes() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); for i in 0..4 { let new_pane_id = i + 3; tab.new_pane(PaneId::Terminal(new_pane_id), None, None, Some(client_id)) @@ -3497,7 +3541,7 @@ fn close_main_stacked_pane() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -3542,7 +3586,7 @@ fn close_main_stacked_pane_in_mid_stack() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -3596,7 +3640,7 @@ fn close_one_liner_stacked_pane_below_main_pane() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -3651,7 +3695,7 @@ fn close_one_liner_stacked_pane_above_main_pane() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -3705,7 +3749,7 @@ fn can_increase_size_of_main_pane_in_stack_horizontally() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -3760,7 +3804,7 @@ fn can_increase_size_of_main_pane_in_stack_vertically() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -3815,7 +3859,7 @@ fn can_increase_size_of_main_pane_in_stack_non_directionally() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -3877,7 +3921,7 @@ fn increasing_size_of_main_pane_in_stack_horizontally_does_not_break_stack() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -3948,7 +3992,7 @@ fn can_increase_size_into_pane_stack_horizontally() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -4002,7 +4046,7 @@ fn can_increase_size_into_pane_stack_vertically() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -4058,7 +4102,7 @@ fn can_increase_size_into_pane_stack_non_directionally() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -4120,7 +4164,7 @@ fn increasing_size_into_main_pane_in_stack_horizontally_does_not_break_stack() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -4187,7 +4231,7 @@ fn decreasing_size_of_whole_tab_treats_stacked_panes_properly() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -4241,7 +4285,7 @@ fn increasing_size_of_whole_tab_treats_stacked_panes_properly() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None); + let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_floating_layouts), None, true); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -4300,7 +4344,7 @@ fn cannot_decrease_stack_size_beyond_minimum_height() { let layout = Layout::from_kdl(swap_layouts, "file_name.kdl".into(), None, None).unwrap(); let swap_tiled_layouts = layout.swap_tiled_layouts.clone(); let swap_floating_layouts = layout.swap_floating_layouts.clone(); - let mut tab = create_new_tab_with_swap_layouts(size, ModeInfo::default(), (swap_tiled_layouts, swap_f |