selectable.rs

 1use gpui::{AnyView, WindowContext};
 2
 3pub trait Selectable {
 4    fn selected(self, selected: bool) -> Self;
 5    fn selected_tooltip(
 6        self,
 7        tooltip: Box<dyn Fn(&mut WindowContext) -> AnyView + 'static>,
 8    ) -> Self;
 9}
10
11#[derive(Debug, Default, PartialEq, Eq, Hash, Clone, Copy)]
12pub enum Selection {
13    #[default]
14    Unselected,
15    Indeterminate,
16    Selected,
17}
18
19impl Selection {
20    pub fn inverse(&self) -> Self {
21        match self {
22            Self::Unselected | Self::Indeterminate => Self::Selected,
23            Self::Selected => Self::Unselected,
24        }
25    }
26}