workspace level integration of serialization complete! Time for item level integration....

Co-Authored-By: kay@zed.dev
This commit is contained in:
Mikayla Maki 2022-11-18 17:18:23 -08:00
parent 992b94eef3
commit 7ceb5e815e

View File

@ -211,13 +211,13 @@ impl WorkspaceDb {
&self,
workspace_id: &WorkspaceId,
) -> Result<SerializedPaneGroup> {
self.get_pane_group_children(workspace_id, None)?
self.get_pane_group(workspace_id, None)?
.into_iter()
.next()
.context("No center pane group")
}
fn get_pane_group_children(
fn get_pane_group(
&self,
workspace_id: &WorkspaceId,
group_id: Option<GroupId>,
@ -254,7 +254,7 @@ impl WorkspaceDb {
if let Some((group_id, axis)) = group_id.zip(axis) {
Ok(SerializedPaneGroup::Group {
axis,
children: self.get_pane_group_children(
children: self.get_pane_group(
workspace_id,
Some(group_id),
)?,
@ -265,6 +265,14 @@ impl WorkspaceDb {
bail!("Pane Group Child was neither a pane group or a pane");
}
})
// Filter out panes and pane groups which don't have any children or items
.filter(|pane_group| {
match pane_group {
Ok(SerializedPaneGroup::Group { children, .. }) => !children.is_empty(),
Ok(SerializedPaneGroup::Pane(pane)) => !pane.children.is_empty(),
_ => true,
}
})
.collect::<Result<_>>()
}