From ee3b82f85d2260509dc443cf4086858926c89ce0 Mon Sep 17 00:00:00 2001 From: rabite Date: Tue, 9 Apr 2019 18:54:40 +0200 Subject: fix crash when over-filtering --- src/listview.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/listview.rs b/src/listview.rs index 92fac5f..976acb0 100644 --- a/src/listview.rs +++ b/src/listview.rs @@ -440,6 +440,11 @@ impl ListView self.content.set_filter(filter); + if self.content.len() == 0 { + self.show_status("No files like that! Resetting filter").log(); + self.content.set_filter(Some("".to_string())); + } + if self.get_selection() > self.len() { self.set_selection(self.len()); } -- cgit v1.2.3 From 1fd25d35c3b1989f6d9a243571095251bcc29535 Mon Sep 17 00:00:00 2001 From: rabite Date: Tue, 9 Apr 2019 19:22:42 +0200 Subject: add/remove placeholder when dir becomes empty/populated --- src/files.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/files.rs b/src/files.rs index f374974..0fd1ea2 100644 --- a/src/files.rs +++ b/src/files.rs @@ -363,10 +363,25 @@ impl Files { new.selected = selected; self.files.push(new); }); + self.sort(); + + if self.len() == 0 { + let placeholder = File::new_placeholder(&self.directory.path)?; + self.files.push(placeholder); + } else { + self.remove_placeholder(); + } + Ok(()) } + fn remove_placeholder(&mut self) { + let dirpath = self.directory.path.clone(); + self.find_file_with_path(&dirpath).cloned() + .map(|placeholder| self.files.remove_item(&placeholder)); + } + pub fn handle_event(&mut self, event: &DebouncedEvent) -> HResult<()> { match event { -- cgit v1.2.3