use crate::project::AbsolutePath;
use crate::tui::project_list::ExpandTarget;
use crate::tui::terminal;
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub enum SelectionSync {
#[default]
Stable,
Changed,
}
impl SelectionSync {
pub const fn is_changed(self) -> bool { matches!(self, Self::Changed) }
}
#[derive(Debug, Default)]
pub struct SelectionPaths {
pub last_selected: Option<AbsolutePath>,
pub selected_project: Option<AbsolutePath>,
pub collapsed_selected: Option<AbsolutePath>,
pub collapsed_anchor: Option<AbsolutePath>,
pub pending_expanded: Vec<ExpandTarget>,
}
impl SelectionPaths {
pub fn new() -> Self {
let (last_selected, pending_expanded) = terminal::load_tree_state();
Self {
last_selected,
pending_expanded,
..Self::default()
}
}
}