diff --git a/crates/app/src/story_workspace.rs b/crates/app/src/story_workspace.rs index baeb03d8..ffcb318b 100644 --- a/crates/app/src/story_workspace.rs +++ b/crates/app/src/story_workspace.rs @@ -55,9 +55,12 @@ impl StoryWorkspace { let dock_area = cx.new_view(|cx| DockArea::new("main-dock", stack_panel.clone(), cx)); let weak_dock_area = dock_area.downgrade(); - let center_tab_panel = cx.new_view(|cx| TabPanel::new(weak_dock_area.clone(), cx)); - let left_tab_panel = cx.new_view(|cx| TabPanel::new(weak_dock_area.clone(), cx)); - let right_tab_panel = cx.new_view(|cx| TabPanel::new(weak_dock_area.clone(), cx)); + let center_tab_panel = + cx.new_view(|cx| TabPanel::new(Some(stack_panel.clone()), weak_dock_area.clone(), cx)); + let left_tab_panel = + cx.new_view(|cx| TabPanel::new(Some(stack_panel.clone()), weak_dock_area.clone(), cx)); + let right_tab_panel = + cx.new_view(|cx| TabPanel::new(Some(stack_panel.clone()), weak_dock_area.clone(), cx)); stack_panel.update(cx, |view, cx| { let left_stack_panel = cx.new_view(|cx| StackPanel::new(Axis::Vertical, cx)); diff --git a/crates/ui/src/dock/tab_panel.rs b/crates/ui/src/dock/tab_panel.rs index 002986ac..b5cc7348 100644 --- a/crates/ui/src/dock/tab_panel.rs +++ b/crates/ui/src/dock/tab_panel.rs @@ -71,11 +71,15 @@ pub struct TabPanel { } impl TabPanel { - pub fn new(dock_area: WeakView, cx: &mut ViewContext) -> Self { + pub fn new( + stack_panel: Option>, + dock_area: WeakView, + cx: &mut ViewContext, + ) -> Self { Self { focus_handle: cx.focus_handle(), dock_area, - stack_panel: None, + stack_panel, panels: Vec::new(), active_ix: 0, tab_bar_scroll_handle: ScrollHandle::new(), @@ -451,7 +455,7 @@ impl TabPanel { ) { let dock_area = self.dock_area.clone(); // wrap the panel in a TabPanel - let new_tab_panel = cx.new_view(|cx| Self::new(dock_area.clone(), cx)); + let new_tab_panel = cx.new_view(|cx| Self::new(None, dock_area.clone(), cx)); new_tab_panel.update(cx, |view, cx| { view.add_panel(panel, cx); });