From a1558b20c6bd80bd749b795fe856e139e7f944ea Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 29 Feb 2024 14:34:41 -0700 Subject: [PATCH] Add select_by_name function --- src/dialog.rs | 12 ++++-------- src/tab.rs | 14 +++++++++----- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/dialog.rs b/src/dialog.rs index c76d34a..066fba5 100644 --- a/src/dialog.rs +++ b/src/dialog.rs @@ -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) => { diff --git a/src/tab.rs b/src/tab.rs index de497f5..8494630 100644 --- a/src/tab.rs +++ b/src/tab.rs @@ -605,10 +605,6 @@ impl Tab { self.items_opt.as_ref() } - pub fn items_opt_mut(&mut self) -> Option<&mut Vec> { - self.items_opt.as_mut() - } - pub fn set_items(&mut self, items: Vec) { 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;