diff options
author | rabite <rabite@posteo.de> | 2020-01-22 21:45:48 +0100 |
---|---|---|
committer | rabite <rabite@posteo.de> | 2020-01-23 04:12:57 +0100 |
commit | c9f33126404d2c23c8667bff9c20183151629ab0 (patch) | |
tree | cf63dc72d88101e5b16afe9296907129d26b8e7f /src/fscache.rs | |
parent | 325f5a5ab3f44457263d7d5c04e488faea0d369e (diff) |
save number of visible files instead of recalculating it every time
Diffstat (limited to 'src/fscache.rs')
-rw-r--r-- | src/fscache.rs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/fscache.rs b/src/fscache.rs index 7f4ce24..9fbc1e8 100644 --- a/src/fscache.rs +++ b/src/fscache.rs @@ -176,6 +176,7 @@ impl FsCache { cache.fs_event_dispatcher.add_target(&dir, &files.pending_events).log(); FsCache::apply_settingss(&cache, &mut files).ok(); + files.sort(); Ok(files) }); Ok((selection, files)) @@ -184,8 +185,7 @@ impl FsCache { pub fn get_files_sync(&self, dir: &File) -> HResult<Files> { let files = self.get_files(&dir, Stale::new())?.1; - let mut files = files.run_sync()?; - FsCache::apply_settingss(&self, &mut files).ok(); + let files = files.run_sync()?; let files = FsCache::ensure_not_empty(files)?; Ok(files) } @@ -268,7 +268,6 @@ impl FsCache { } } - files.sort(); let files = FsCache::ensure_not_empty(files)?; Ok(files) }); @@ -285,6 +284,12 @@ impl FsCache { if tab_settings.is_none() { return Ok(()) } let tab_settings = tab_settings?; + if files.show_hidden != tab_settings.dir_settings.show_hidden || + files.filter != tab_settings.dir_settings.filter || + files.filter_selected != tab_settings.dir_settings.filter_selected { + files.recalculate_len(); + } + files.sort = tab_settings.dir_settings.sort; files.dirs_first = tab_settings.dir_settings.dirs_first; files.reverse = tab_settings.dir_settings.reverse; @@ -292,6 +297,8 @@ impl FsCache { files.filter = tab_settings.dir_settings.filter.clone(); files.filter_selected = tab_settings.dir_settings.filter_selected; + + if tab_settings.multi_selections.len() > 0 { for file in &mut files.files { for selected_files in &tab_settings.multi_selections { @@ -302,7 +309,6 @@ impl FsCache { } } - files.sort(); Ok(()) } @@ -311,6 +317,7 @@ impl FsCache { let path = &files.directory.path; let placeholder = File::new_placeholder(&path)?; files.files.push(placeholder); + files.len = 1; } Ok(files) } |