Avoid cancelling ::open_entry task in FileFinder

Max Brunsfeld created

Change summary

zed/src/file_finder.rs              | 4 +++-
zed/src/workspace/workspace_view.rs | 6 ++++--
2 files changed, 7 insertions(+), 3 deletions(-)

Detailed changes

zed/src/file_finder.rs 🔗

@@ -275,7 +275,9 @@ impl FileFinder {
     ) {
         match event {
             Event::Selected(tree_id, path) => {
-                workspace_view.open_entry((*tree_id, path.clone()), ctx);
+                workspace_view
+                    .open_entry((*tree_id, path.clone()), ctx)
+                    .map(|d| d.detach());
                 workspace_view.dismiss_modal(ctx);
             }
             Event::Dismissed => {

zed/src/workspace/workspace_view.rs 🔗

@@ -3,7 +3,8 @@ use crate::{settings::Settings, watch};
 use futures_core::{future::LocalBoxFuture, Future};
 use gpui::{
     color::rgbu, elements::*, json::to_string_pretty, keymap::Binding, AnyViewHandle, AppContext,
-    ClipboardItem, Entity, ModelHandle, MutableAppContext, View, ViewContext, ViewHandle,
+    ClipboardItem, Entity, EntityTask, ModelHandle, MutableAppContext, View, ViewContext,
+    ViewHandle,
 };
 use log::error;
 use std::{
@@ -223,11 +224,12 @@ impl WorkspaceView {
         }
     }
 
+    #[must_use]
     pub fn open_entry(
         &mut self,
         entry: (usize, Arc<Path>),
         ctx: &mut ViewContext<Self>,
-    ) -> Option<impl Future<Output = ()>> {
+    ) -> Option<EntityTask<()>> {
         if self.loading_entries.contains(&entry) {
             return None;
         }