summaryrefslogtreecommitdiffstats
path: root/src/interactive/widgets/mark.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/interactive/widgets/mark.rs')
-rw-r--r--src/interactive/widgets/mark.rs9
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);