summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/devices/file_device.rs4
-rw-r--r--src/devices/file_device/directory_listing.rs5
2 files changed, 8 insertions, 1 deletions
diff --git a/src/devices/file_device.rs b/src/devices/file_device.rs
index 00a2f69..61966b1 100644
--- a/src/devices/file_device.rs
+++ b/src/devices/file_device.rs
@@ -81,7 +81,9 @@ impl FileDevice {
self.path_buffer.clear();
self.flush();
- if let Some((Entry::Directory(dir), path)) = std::mem::take(&mut self.entry) {
+ if let Some((Entry::Directory(mut dir), path)) = std::mem::take(&mut self.entry) {
+ // Prevent the selected child from persisting when loading from cache.
+ dir.deselect_child();
self.cached_dir = Some((Entry::Directory(dir), path));
}
}
diff --git a/src/devices/file_device/directory_listing.rs b/src/devices/file_device/directory_listing.rs
index 1d7ddd2..465efc7 100644
--- a/src/devices/file_device/directory_listing.rs
+++ b/src/devices/file_device/directory_listing.rs
@@ -100,6 +100,11 @@ impl DirectoryListing {
}
}
+ pub fn deselect_child(&mut self) {
+ self.child_path_buffer.clear();
+ self.selected = None;
+ }
+
pub fn child_path_buffer(&mut self) -> &mut BedrockPathBuffer {
&mut self.child_path_buffer
}