diff options
Diffstat (limited to 'src/fs/entry.rs')
-rw-r--r-- | src/fs/entry.rs | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/fs/entry.rs b/src/fs/entry.rs index 8337bc4..f7dae32 100644 --- a/src/fs/entry.rs +++ b/src/fs/entry.rs @@ -12,7 +12,10 @@ pub struct JoshutoDirEntry { label: String, path: path::PathBuf, pub metadata: JoshutoMetadata, - selected: bool, + /// Directly selected by the user, _not_ by a current visual mode selection + permanent_selected: bool, + /// Temporarily selected by the visual mode range + visual_mode_selected: bool, _marked: bool, } @@ -63,11 +66,23 @@ impl JoshutoDirEntry { } pub fn is_selected(&self) -> bool { - self.selected + self.permanent_selected || self.visual_mode_selected } - pub fn set_selected(&mut self, selected: bool) { - self.selected = selected; + pub fn is_permanent_selected(&self) -> bool { + self.permanent_selected + } + + pub fn is_visual_mode_selected(&self) -> bool { + self.visual_mode_selected + } + + pub fn set_permanent_selected(&mut self, selected: bool) { + self.permanent_selected = selected; + } + + pub fn set_visual_mode_selected(&mut self, visual_mode_selected: bool) { + self.visual_mode_selected = visual_mode_selected; } pub fn get_ext(&self) -> &str { @@ -102,7 +117,8 @@ impl JoshutoDirEntry { label, path, metadata, - selected: false, + permanent_selected: false, + visual_mode_selected: false, _marked: false, }) } |