feat: filter by full path (prefix + filename) in search view instead of just filename (#2915)

This commit is contained in:
三咲雅 misaki masa 2025-06-24 13:29:34 +08:00 committed by GitHub
parent 1ed244a0a5
commit e218f1d8bb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 9 additions and 6 deletions

View file

@ -186,10 +186,9 @@ impl Files {
}
let (mut hidden, mut items) = if let Some(filter) = &self.filter {
urns.into_iter().partition(|u| {
(!self.show_hidden && u.as_urn().is_hidden())
|| !u.as_urn().name().is_some_and(|s| filter.matches(s))
})
urns
.into_iter()
.partition(|u| (!self.show_hidden && u.as_urn().is_hidden()) || !filter.matches(u.as_urn()))
} else if self.show_hidden {
(HashSet::new(), urns)
} else {
@ -267,7 +266,7 @@ impl Files {
let (mut hidden, mut items) = if let Some(filter) = &self.filter {
files
.into_iter()
.partition(|(_, f)| (f.is_hidden() && !self.show_hidden) || !filter.matches(f.name()))
.partition(|(_, f)| (f.is_hidden() && !self.show_hidden) || !filter.matches(f.urn()))
} else if self.show_hidden {
(HashMap::new(), files)
} else {
@ -320,7 +319,7 @@ impl Files {
if let Some(filter) = &self.filter {
files
.into_iter()
.partition(|f| (f.is_hidden() && !self.show_hidden) || !filter.matches(f.name()))
.partition(|f| (f.is_hidden() && !self.show_hidden) || !filter.matches(f.urn()))
} else if self.show_hidden {
(vec![], files.into_iter().collect())
} else {

View file

@ -36,6 +36,10 @@ impl AsRef<Path> for Urn {
fn as_ref(&self) -> &Path { &self.0 }
}
impl AsRef<OsStr> for Urn {
fn as_ref(&self) -> &OsStr { self.0.as_os_str() }
}
impl ToOwned for Urn {
type Owned = UrnBuf;