From 48a4a8bb144d941607708a330b4758938189b31e Mon Sep 17 00:00:00 2001 From: rabite Date: Fri, 7 Feb 2020 22:29:53 +0100 Subject: fix calculation of the number of files when toggling hidden files --- src/files.rs | 14 ++++++++------ src/listview.rs | 4 +++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/files.rs b/src/files.rs index 6e800dd..914f16f 100644 --- a/src/files.rs +++ b/src/files.rs @@ -550,11 +550,10 @@ impl Files { self.set_dirty(); if self.show_hidden == true && self.len() > 1 { - self.remove_placeholder(); - } else { - // avoid doing this twice, since remove_placeholder() does it too - self.recalculate_len(); + self.remove_placeholder() } + + self.recalculate_len(); } fn remove_placeholder(&mut self) { @@ -562,7 +561,9 @@ impl Files { self.find_file_with_path(&dirpath).cloned() .map(|placeholder| { self.files.remove_item(&placeholder); - self.recalculate_len(); + if self.len > 0 { + self.len -= 1; + } }); } @@ -895,7 +896,8 @@ impl File { .map(|dirs| { let size = dirs.count(); dirsize.store(size as u32, Ordering::Release); - }); + }).map_err(HError::from) + .log(); }); } diff --git a/src/listview.rs b/src/listview.rs index db08908..6709114 100644 --- a/src/listview.rs +++ b/src/listview.rs @@ -987,9 +987,11 @@ where .map(|(i, item)| { let mut output = term::normal_color(); - if i == (self.selection - self.offset) { + // i counts from the offset, while selection counts from 0 + if i + self.offset == self.selection { output += &term::invert(); } + output += &format!( "{}{}{}", term::goto_xy(xpos, i as u16 + ypos), -- cgit v1.2.3