Prevent splits in the terminal panel

Antonio Scandurra created

Change summary

crates/terminal_view/src/terminal_panel.rs |  1 +
crates/workspace/src/pane.rs               | 11 +++++++++--
2 files changed, 10 insertions(+), 2 deletions(-)

Detailed changes

crates/terminal_view/src/terminal_panel.rs 🔗

@@ -28,6 +28,7 @@ impl TerminalPanel {
                 workspace.app_state().background_actions,
                 cx,
             );
+            pane.set_can_split(false, cx);
             pane.on_can_drop(move |drag_and_drop, cx| {
                 drag_and_drop
                     .currently_dragged::<DraggedItem>(window_id)

crates/workspace/src/pane.rs 🔗

@@ -149,6 +149,7 @@ pub struct Pane {
     workspace: WeakViewHandle<Workspace>,
     has_focus: bool,
     can_drop: Rc<dyn Fn(&DragAndDrop<Workspace>, &WindowContext) -> bool>,
+    can_split: bool,
 }
 
 pub struct ItemNavHistory {
@@ -255,6 +256,7 @@ impl Pane {
             workspace,
             has_focus: false,
             can_drop: Rc::new(|_, _| true),
+            can_split: true,
         }
     }
 
@@ -282,6 +284,11 @@ impl Pane {
         self.can_drop = Rc::new(can_drop);
     }
 
+    pub fn set_can_split(&mut self, can_split: bool, cx: &mut ViewContext<Self>) {
+        self.can_split = can_split;
+        cx.notify();
+    }
+
     pub fn nav_history_for_item<T: Item>(&self, item: &ViewHandle<T>) -> ItemNavHistory {
         ItemNavHistory {
             history: self.nav_history.clone(),
@@ -1563,8 +1570,8 @@ impl View for Pane {
                             self,
                             0,
                             self.active_item_index + 1,
-                            false,
-                            Some(100.),
+                            !self.can_split,
+                            if self.can_split { Some(100.) } else { None },
                             cx,
                             {
                                 let toolbar = self.toolbar.clone();