Add select_by_name function

This commit is contained in:
Jeremy Soller 2024-02-29 14:34:41 -07:00
parent b9f959a298
commit a1558b20c6
No known key found for this signature in database
GPG key ID: D02FD439211AF56F
2 changed files with 13 additions and 13 deletions

View file

@ -446,15 +446,11 @@ impl Application for App {
}
}
Message::Filename(new_filename) => {
if let DialogKind::SaveFile { filename } = &mut self.flags.kind {
*filename = new_filename.clone();
}
// Select based on filename
if let Some(items) = self.tab.items_opt_mut() {
for item in items.iter_mut() {
item.selected = item.name == new_filename;
}
self.tab.select_by_name(&new_filename);
if let DialogKind::SaveFile { filename } = &mut self.flags.kind {
*filename = new_filename;
}
}
Message::Modifiers(modifiers) => {

View file

@ -605,10 +605,6 @@ impl Tab {
self.items_opt.as_ref()
}
pub fn items_opt_mut(&mut self) -> Option<&mut Vec<Item>> {
self.items_opt.as_mut()
}
pub fn set_items(&mut self, items: Vec<Item>) {
self.items_opt = Some(items);
}
@ -639,7 +635,7 @@ impl Tab {
had_selection
}
fn select_by_drag(&mut self, rect: Rectangle) {
pub fn select_by_drag(&mut self, rect: Rectangle) {
let items = match &mut self.items_opt {
Some(some) => some,
None => return,
@ -654,6 +650,14 @@ impl Tab {
}
}
pub fn select_by_name(&mut self, name: &str) {
if let Some(ref mut items) = self.items_opt {
for item in items.iter_mut() {
item.selected = item.name == name;
}
}
}
fn selection_first(&self) -> Option<(usize, usize)> {
let items = self.items_opt.as_ref()?;
let mut first = None;