diff options
Diffstat (limited to 'src/interactive/widgets/mark.rs')
-rw-r--r-- | src/interactive/widgets/mark.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/interactive/widgets/mark.rs b/src/interactive/widgets/mark.rs index 4e5829a..e01604b 100644 --- a/src/interactive/widgets/mark.rs +++ b/src/interactive/widgets/mark.rs @@ -28,6 +28,7 @@ use unicode_segmentation::UnicodeSegmentation; pub enum MarkMode { Delete, + Trash, } pub type EntryMarkMap = BTreeMap<TreeIndex, EntryMark>; @@ -109,6 +110,7 @@ impl MarkPane { let action = None; match key { Ctrl('r') => return Some(self.prepare_deletion()), + Ctrl('t') => return Some(self.prepare_trashing()), Char('x') | Char('d') | Char(' ') => { return self.remove_selected().map(|s| (s, action)) } @@ -184,6 +186,13 @@ impl MarkPane { self.selected = Some(0); (self, Some(MarkMode::Delete)) } + fn prepare_trashing(mut self) -> (Self, Option<MarkMode>) { + for entry in self.marked.values_mut() { + entry.num_errors_during_deletion = 0; + } + self.selected = Some(0); + (self, Some(MarkMode::Trash)) + } fn remove_selected(mut self) -> Option<Self> { if let Some(mut selected) = self.selected { let idx = self.tree_index_by_list_position(selected); |