diff options
author | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2020-03-03 13:14:11 -0500 |
---|---|---|
committer | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2020-03-03 13:14:11 -0500 |
commit | a1b4e12eb5d81919a0db2f7107b915ab1cc40d50 (patch) | |
tree | 87265f4e8360b43f964a66843ce99c0dac3dca7f /src/fs/dirlist.rs | |
parent | 7bc1f9ea482ad0d3a4ac1f692eed2bf2d06cda45 (diff) |
fix cursor moving to top after deletion or rename
Diffstat (limited to 'src/fs/dirlist.rs')
-rw-r--r-- | src/fs/dirlist.rs | 22 |
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), } + + } }; |