diff --git a/local/recipes/tui/tlc/source/src/filemanager/render.rs b/local/recipes/tui/tlc/source/src/filemanager/render.rs index e5507a866c..6cb59f3203 100644 --- a/local/recipes/tui/tlc/source/src/filemanager/render.rs +++ b/local/recipes/tui/tlc/source/src/filemanager/render.rs @@ -559,6 +559,24 @@ impl FileManager { Style::default().fg(self.theme.accent).bg(panel_bg), )); } + // Marked-file total size: sum of stat.size for every + // entry whose name is in the marked set. Shown only when + // at least one file is marked. Directories are counted. + if panel.marked_count() > 0 { + let marked_set: std::collections::HashSet = + panel.marked_names().into_iter().collect(); + let total: u64 = panel + .entries() + .iter() + .filter(|e| marked_set.contains(&e.name)) + .map(|e| e.stat.size) + .sum(); + footer_spans.push(Span::raw(" ")); + footer_spans.push(Span::styled( + format!("Σ {}", format_utils::format_size(total)), + Style::default().fg(self.theme.info).bg(panel_bg), + )); + } let total_w = footer_spans.iter().map(|s| s.width() as u16).sum::(); if total_w < inner.width { let pad = inner.width - total_w;