diff options
-rw-r--r-- | src/files.rs | 14 | ||||
-rw-r--r-- | 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), |