summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/interactive/app/eventloop.rs1
-rw-r--r--src/interactive/widgets/mark.rs13
2 files changed, 12 insertions, 2 deletions
diff --git a/src/interactive/app/eventloop.rs b/src/interactive/app/eventloop.rs
index adf0955..25c6ef2 100644
--- a/src/interactive/app/eventloop.rs
+++ b/src/interactive/app/eventloop.rs
@@ -30,6 +30,7 @@ pub type EntryMarkMap = BTreeMap<TreeIndex, EntryMark>;
pub struct EntryMark {
pub size: u64,
pub path: PathBuf,
+ pub index: usize,
}
#[derive(Default)]
diff --git a/src/interactive/widgets/mark.rs b/src/interactive/widgets/mark.rs
index 8479741..7d50991 100644
--- a/src/interactive/widgets/mark.rs
+++ b/src/interactive/widgets/mark.rs
@@ -45,11 +45,19 @@ impl MarkPane {
self.marked.remove(&index);
} else {
if let Some(e) = tree.node_weight(index) {
+ let sorting_index = self
+ .marked
+ .values()
+ .map(|v| v.index)
+ .max()
+ .unwrap_or(0)
+ .wrapping_add(1);
self.marked.insert(
index,
EntryMark {
size: e.size,
path: path_of(tree, index),
+ index: sorting_index,
},
);
}
@@ -85,8 +93,9 @@ impl MarkPane {
let MarkPaneProps { border_style } = props.borrow();
let marked: &_ = &self.marked;
+ let title = format!("Marked Entries: {}", marked.len());
let block = Block::default()
- .title("Marked Entries")
+ .title(&title)
.border_style(*border_style)
.borders(Borders::ALL);
let entry_in_view = self
@@ -96,7 +105,7 @@ impl MarkPane {
let selected = self.selected;
let entries = marked
.values()
- .sorted_by_key(|v| &v.path)
+ .sorted_by_key(|v| &v.index)
.enumerate()
.map(|(idx, v)| {
let modifier = match selected {