Pass project entry id to Pane when opening a project items
Nathan Sobo
created 3 years ago
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.
Change summary
crates/workspace/src/workspace.rs | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
Detailed changes
@@ -862,10 +862,9 @@ impl Workspace {
{
use project::Item as _;
- if let Some(item) = project_item
- .read(cx)
- .entry_id(cx)
- .and_then(|entry_id| self.active_pane().read(cx).item_for_entry(entry_id))
+ let entry_id = project_item.read(cx).entry_id(cx);
+ if let Some(item) = entry_id
+ .and_then(|entry_id| self.active_pane().read(cx).item_for_entry(dbg!(entry_id)))
.and_then(|item| item.downcast())
{
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));
- 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
}