This commit is contained in:
sxyazi 2024-02-10 19:41:32 +08:00
parent 0fa0acb6ab
commit b6f572ecec
No known key found for this signature in database
4 changed files with 17 additions and 18 deletions

View file

@ -38,13 +38,11 @@ impl Tab {
};
let state = self.mode.is_select();
for i in indices {
if let Some(file) = self.current.files.get(*i) {
if state {
self.selected.insert(file.url.clone());
} else {
self.selected.remove(&file.url);
}
for f in indices.iter().filter_map(|i| self.current.files.get(*i)) {
if state {
self.selected.insert(f.url());
} else {
self.selected.remove(&f.url);
}
}

View file

@ -26,20 +26,18 @@ impl Tab {
let mut b = false;
match opt.into().state {
Some(true) => {
for file in self.current.files.iter() {
b |= self.selected.insert(file.url());
for f in self.current.files.iter() {
b |= self.selected.insert(f.url());
}
}
Some(false) => {
for file in self.current.files.iter() {
b |= self.selected.remove(&file.url);
for f in self.current.files.iter() {
b |= self.selected.remove(&f.url);
}
}
None => {
for file in self.current.files.iter() {
if !self.selected.remove(&file.url) {
b |= self.selected.insert(file.url());
}
for f in self.current.files.iter() {
b |= self.selected.remove(&f.url) || self.selected.insert(f.url());
}
}
}

View file

@ -59,7 +59,7 @@ impl Tab {
let pending = self.mode.visual().map(|(_, p)| Cow::Borrowed(p)).unwrap_or_default();
let is_unset = self.mode.is_unset();
if self.selected.is_empty() && (is_unset || pending.is_empty()) {
return vec![];
return self.current.hovered().map(|h| vec![h]).unwrap_or_default();
}
let selected: BTreeSet<_> = self.selected.iter().collect();
@ -81,7 +81,10 @@ impl Tab {
}
}
}
items
Some(items)
.filter(|v| !v.is_empty())
.or_else(|| self.current.hovered().map(|h| vec![h]))
.unwrap_or_default()
}
// --- History

View file

@ -23,7 +23,7 @@ impl Files {
folder: &yazi_core::folder::Folder,
tab: &yazi_core::tab::Tab,
) -> mlua::Result<AnyUserData<'static>> {
SCOPE.create_any_userdata(Self { folder, window, tab })
SCOPE.create_any_userdata(Self { window, folder, tab })
}
pub(super) fn register(lua: &Lua) -> mlua::Result<()> {