summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-04-14 22:46:00 +0200
committerrabite <rabite@posteo.de>2019-04-14 22:47:26 +0200
commit127c3e89a41556a879565e9e8fc573be88c2e34d (patch)
tree385fe173b84e130dcc933e7d1ae3c47cbb07422a
parentd41ee4aedb8265313d443d60e1f5b6b332cf28f7 (diff)
create placeholder when folder is empty when hiding files
-rw-r--r--src/files.rs7
-rw-r--r--src/fscache.rs11
-rw-r--r--src/listview.rs6
3 files changed, 23 insertions, 1 deletions
diff --git a/src/files.rs b/src/files.rs
index 0fd1ea2..d1a3775 100644
--- a/src/files.rs
+++ b/src/files.rs
@@ -342,7 +342,12 @@ impl Files {
}
pub fn toggle_hidden(&mut self) {
- self.show_hidden = !self.show_hidden
+ self.show_hidden = !self.show_hidden;
+ self.set_dirty();
+
+ if self.show_hidden == true {
+ self.remove_placeholder();
+ }
}
pub fn replace_file(&mut self,
diff --git a/src/fscache.rs b/src/fscache.rs
index e5b1340..1c5ab17 100644
--- a/src/fscache.rs
+++ b/src/fscache.rs
@@ -130,6 +130,7 @@ impl FsCache {
let files = self.get_files(&dir, Stale::new())?.1;
let mut files = files.wait()?;
FsCache::apply_settingss(&self, &mut files).ok();
+ let files = FsCache::ensure_not_empty(files)?;
Ok(files)
}
@@ -230,6 +231,7 @@ impl FsCache {
}
files.sort();
+ let files = FsCache::ensure_not_empty(files)?;
Ok(files)
}));
@@ -265,6 +267,15 @@ impl FsCache {
Ok(())
}
+ pub fn ensure_not_empty(mut files: Files) -> HResult<Files> {
+ if files.len() == 0 {
+ let path = &files.directory.path;
+ let placeholder = File::new_placeholder(&path)?;
+ files.files.push(placeholder);
+ }
+ Ok(files)
+ }
+
fn extract_tab_settings(files: &Files, selection: Option<File>) -> TabSettings {
TabSettings {
diff --git a/src/listview.rs b/src/listview.rs
index b2225e0..f584597 100644
--- a/src/listview.rs
+++ b/src/listview.rs
@@ -35,6 +35,12 @@ impl Listable for ListView<Files> {
}
fn on_refresh(&mut self) -> HResult<()> {
+ if self.content.len() == 0 {
+ let path = &self.content.directory.path;
+ let placeholder = File::new_placeholder(&path)?;
+ self.content.files.push(placeholder);
+ }
+
let sender = self.core.get_sender();
let visible_files = self.core.coordinates.size_u().1 + self.offset + 1;