From 717ebe6a4c17394dbbccfcfbc22817376815888a Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Tue, 19 Apr 2022 13:16:57 -0700 Subject: [PATCH] Don't cancel match updates when picker query changes The file finder often cancels an in-progress match task when the project updates. But it still needs to take the matches that it did find and add them to its results. So we should not cancel the entire task, as this will cause the partial results to be discarded. --- crates/picker/src/picker.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/crates/picker/src/picker.rs b/crates/picker/src/picker.rs index 199429b07e..96062dc0e6 100644 --- a/crates/picker/src/picker.rs +++ b/crates/picker/src/picker.rs @@ -18,7 +18,6 @@ pub struct Picker { delegate: WeakViewHandle, query_editor: ViewHandle, list_state: UniformListState, - update_task: Option>, max_size: Vector2F, confirmed: bool, } @@ -136,7 +135,6 @@ impl Picker { let this = Self { query_editor, list_state: Default::default(), - update_task: None, delegate, max_size: vec2f(500., 420.), confirmed: false, @@ -178,7 +176,7 @@ impl Picker { let query = self.query(cx); let update = delegate.update(cx, |d, cx| d.update_matches(query, cx)); cx.notify(); - self.update_task = Some(cx.spawn(|this, mut cx| async move { + cx.spawn(|this, mut cx| async move { update.await; this.update(&mut cx, |this, cx| { if let Some(delegate) = this.delegate.upgrade(cx) { @@ -191,10 +189,10 @@ impl Picker { }; this.list_state.scroll_to(target); cx.notify(); - this.update_task.take(); } }); - })); + }) + .detach() } }