summaryrefslogtreecommitdiffstats
path: root/src/fs/dirlist.rs
diff options
context:
space:
mode:
authorJiayi Zhao <jeff.no.zhao@gmail.com>2020-03-03 13:14:11 -0500
committerJiayi Zhao <jeff.no.zhao@gmail.com>2020-03-03 13:14:11 -0500
commita1b4e12eb5d81919a0db2f7107b915ab1cc40d50 (patch)
tree87265f4e8360b43f964a66843ce99c0dac3dca7f /src/fs/dirlist.rs
parent7bc1f9ea482ad0d3a4ac1f692eed2bf2d06cda45 (diff)
fix cursor moving to top after deletion or rename
Diffstat (limited to 'src/fs/dirlist.rs')
-rw-r--r--src/fs/dirlist.rs22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/fs/dirlist.rs b/src/fs/dirlist.rs
index d6c4673..e3462b2 100644
--- a/src/fs/dirlist.rs
+++ b/src/fs/dirlist.rs
@@ -65,15 +65,23 @@ impl JoshutoDirList {
if contents_len == 0 {
None
} else {
- match self.get_curr_ref() {
- Some(entry) => contents
- .iter()
- .enumerate()
- .find(|(_, e)| e.file_name() == entry.file_name())
- .and_then(|(i, _)| Some(i))
- .or(Some(0)),
+ match self.index {
+ Some(i) if i < contents_len => {
+ Some(i)
+ }
+ Some(i) => {
+ let entry = &self.contents[i];
+ contents
+ .iter()
+ .enumerate()
+ .find(|(_, e)| e.file_name() == entry.file_name())
+ .and_then(|(i, _)| Some(i))
+ .or(Some(0))
+ }
None => Some(0),
}
+
+
}
};