summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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),