summaryrefslogtreecommitdiff
path: root/src/devices/file_device.rs
diff options
context:
space:
mode:
authorBen Bridle <ben@derelict.engineering>2024-11-24 16:19:46 +1300
committerBen Bridle <ben@derelict.engineering>2024-11-24 16:19:46 +1300
commit583c961c0158fd44817695225e06d07caa18657e (patch)
tree8ec633cd67076ddadca9e0014824f22974c5217f /src/devices/file_device.rs
parentb1dbae360b3ed8de5354ffc4677fb3ada1646cfa (diff)
downloadbedrock-pc-583c961c0158fd44817695225e06d07caa18657e.zip
Fix file device cached child issue
When opening the previously-visited directory in the file device, the directory data is read from a cache, preventing the need to have it regenerated from scratch. The directory data includes the selected child, which meant that instead of child 0 being selected as per the specification, the previously-selected child was selected instead. To fix this, the child is deselected as the directory data is cached.
Diffstat (limited to 'src/devices/file_device.rs')
-rw-r--r--src/devices/file_device.rs4
1 files changed, 3 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));
}
}