From b75c27da6fc93311698e809803f9c65afcecd919 Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Fri, 26 May 2023 14:15:58 +0300 Subject: [PATCH] Simplify selected index handling --- crates/file_finder/src/file_finder.rs | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/crates/file_finder/src/file_finder.rs b/crates/file_finder/src/file_finder.rs index 13dc46382f..5a9d501746 100644 --- a/crates/file_finder/src/file_finder.rs +++ b/crates/file_finder/src/file_finder.rs @@ -6,7 +6,7 @@ use gpui::{ use picker::{Picker, PickerDelegate}; use project::{PathMatchCandidateSet, Project, ProjectPath, WorktreeId}; use std::{ - path::{Path, PathBuf}, + path::PathBuf, sync::{ atomic::{self, AtomicBool}, Arc, @@ -27,7 +27,7 @@ pub struct FileFinderDelegate { latest_search_query: Option>, currently_opened_path: Option, matches: Vec, - selected: Option<(usize, Arc)>, + selected_index: Option, cancel_flag: Arc, history_items: Vec, } @@ -165,7 +165,7 @@ impl FileFinderDelegate { latest_search_query: None, currently_opened_path, matches: Vec::new(), - selected: None, + selected_index: None, cancel_flag: Arc::new(AtomicBool::new(false)), history_items, } @@ -264,21 +264,11 @@ impl PickerDelegate for FileFinderDelegate { } fn selected_index(&self) -> usize { - if let Some(selected) = self.selected.as_ref() { - for (ix, path_match) in self.matches.iter().enumerate() { - if (path_match.worktree_id, path_match.path.as_ref()) - == (selected.0, selected.1.as_ref()) - { - return ix; - } - } - } - 0 + self.selected_index.unwrap_or(0) } fn set_selected_index(&mut self, ix: usize, cx: &mut ViewContext) { - let mat = &self.matches[ix]; - self.selected = Some((mat.worktree_id, mat.path.clone())); + self.selected_index = Some(ix); cx.notify(); } @@ -418,7 +408,7 @@ impl PickerDelegate for FileFinderDelegate { #[cfg(test)] mod tests { - use std::{assert_eq, collections::HashMap, time::Duration}; + use std::{assert_eq, collections::HashMap, path::Path, time::Duration}; use super::*; use editor::Editor;