summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2020-02-07 22:29:53 +0100
committerrabite <rabite@posteo.de>2020-02-07 22:31:33 +0100
commit48a4a8bb144d941607708a330b4758938189b31e (patch)
tree007f12cbe427fee72c1f854ff4a22b166c509f06
parent0f7be9e9290624b8ce9ebcfaa960065353483306 (diff)
fix calculation of the number of files when toggling hidden files
-rw-r--r--src/files.rs14
-rw-r--r--src/listview.rs4
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),