summaryrefslogtreecommitdiffstats
path: root/src/files.rs
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-03-16 22:49:27 +0100
committerrabite <rabite@posteo.de>2019-03-17 00:19:58 +0100
commit8b1c4db9cfa2ea0bf02e9e96c29b2510bbc391af (patch)
treef3c2b0e857691ae968d54269a0cd3b8067d36dbc /src/files.rs
parent33a9562379b9d6fdd7be19ce20b3a5ac1fa7e1c7 (diff)
big performance improvement
Diffstat (limited to 'src/files.rs')
-rw-r--r--src/files.rs21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/files.rs b/src/files.rs
index e2a5aab..5cc7dd8 100644
--- a/src/files.rs
+++ b/src/files.rs
@@ -13,6 +13,7 @@ use failure::Error;
use notify::DebouncedEvent;
use crate::fail::{HResult, HError};
+use crate::dirty::{DirtyBit, Dirtyable};
@@ -54,7 +55,8 @@ pub struct Files {
pub sort: SortBy,
pub dirs_first: bool,
pub reverse: bool,
- pub show_hidden: bool
+ pub show_hidden: bool,
+ pub dirty: DirtyBit
}
impl Index<usize> for Files {
@@ -65,7 +67,15 @@ impl Index<usize> for Files {
}
+impl Dirtyable for Files {
+ fn get_bit(&self) -> &DirtyBit {
+ &self.dirty
+ }
+ fn get_bit_mut(&mut self) -> &mut DirtyBit {
+ &mut self.dirty
+ }
+}
impl Files {
@@ -88,7 +98,8 @@ impl Files {
sort: SortBy::Name,
dirs_first: true,
reverse: false,
- show_hidden: true
+ show_hidden: true,
+ dirty: DirtyBit::new()
};
files.sort();
@@ -131,7 +142,8 @@ impl Files {
sort: SortBy::Name,
dirs_first: true,
reverse: false,
- show_hidden: true
+ show_hidden: true,
+ dirty: DirtyBit::new()
};
files.sort();
@@ -188,6 +200,7 @@ impl Files {
if self.reverse {
self.files.reverse();
}
+ self.set_dirty();
}
pub fn cycle_sort(&mut self) {
@@ -216,6 +229,7 @@ impl Files {
.collect();
self.files = files;
+ self.set_dirty();
}
pub fn handle_event(&mut self, event: &DebouncedEvent) -> HResult<()> {
@@ -247,6 +261,7 @@ impl Files {
},
_ => {},
}
+ self.set_dirty();
Ok(())
}