use dumpster::sync::Gc; use crate::tui::{log_viewer::filters::Filters, model::LogEntry, processing::Cursor}; pub struct LogView { pub cursor: Cursor, pub selection_offset: usize, } impl LogView { pub fn selected(&self, filters: &Filters) -> Option<(Gc, usize)> { let mut temp_iter = self.cursor.clone(); for _ in 0..(self.selection_offset + 1) { if !temp_iter.next(filters) { return None; } } Some((temp_iter.curr(), self.cursor.inline_depth())) } } impl Clone for LogView { fn clone(&self) -> Self { Self { cursor: self.cursor.clone(), selection_offset: self.selection_offset, } } }