Pass project entry id to Pane when opening a project items

This fixes an oversight where we were failing to associate project items with their project entry ids, which broke the logic that prevented the same project entry from being opened twice in the same pane.
This commit is contained in:
Nathan Sobo 2022-03-20 08:54:20 -06:00
parent c8a6226e03
commit 7cb8935ff5

View file

@ -862,10 +862,9 @@ impl Workspace {
{ {
use project::Item as _; use project::Item as _;
if let Some(item) = project_item let entry_id = project_item.read(cx).entry_id(cx);
.read(cx) if let Some(item) = entry_id
.entry_id(cx) .and_then(|entry_id| self.active_pane().read(cx).item_for_entry(dbg!(entry_id)))
.and_then(|entry_id| self.active_pane().read(cx).item_for_entry(entry_id))
.and_then(|item| item.downcast()) .and_then(|item| item.downcast())
{ {
self.activate_item(&item, cx); self.activate_item(&item, cx);
@ -873,7 +872,9 @@ impl Workspace {
} }
let item = cx.add_view(|cx| T::for_project_item(self.project().clone(), project_item, cx)); let item = cx.add_view(|cx| T::for_project_item(self.project().clone(), project_item, cx));
self.add_item(Box::new(item.clone()), cx); self.active_pane().update(cx, |pane, cx| {
pane.add_item(entry_id, Box::new(item.clone()), cx)
});
item item
} }