use crate::{Tree, WindowState};
#[derive(Clone, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub enum Surface<Tab> {
Empty,
Main(Tree<Tab>),
Window(Tree<Tab>, WindowState),
}
impl<Tab> Surface<Tab> {
pub const fn is_empty(&self) -> bool {
matches!(self, Self::Empty)
}
pub fn node_tree_mut(&mut self) -> Option<&mut Tree<Tab>> {
match self {
Surface::Empty => None,
Surface::Main(tree) => Some(tree),
Surface::Window(tree, _) => Some(tree),
}
}
pub fn node_tree(&self) -> Option<&Tree<Tab>> {
match self {
Surface::Empty => None,
Surface::Main(tree) => Some(tree),
Surface::Window(tree, _) => Some(tree),
}
}
}