#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
pub enum WidgetKind {
Modal,
Popup,
Dropdown,
ContextMenu,
Toolbar,
Sidebar,
Panel,
BlackboxPanel,
Chrome,
ChromeTab,
Button,
Checkbox,
Clock,
CloseButton,
ColorSwatch,
DropdownTrigger,
Item,
Radio,
ScrollbarHandle,
ScrollbarTrack,
ScrollChevron,
Separator,
Slider,
Toggle,
Tooltip,
DragHandle,
Custom,
}
impl WidgetKind {
pub const fn is_composite(self) -> bool {
use WidgetKind::*;
matches!(
self,
Modal | Popup | Dropdown | ContextMenu | Toolbar | Sidebar
| Panel | BlackboxPanel | Chrome | ChromeTab
)
}
pub const fn is_atomic(self) -> bool {
!self.is_composite()
}
pub const fn is_blackbox(self) -> bool {
matches!(self, WidgetKind::BlackboxPanel)
}
pub const fn allows_children(self) -> bool {
self.is_composite() && !self.is_blackbox()
}
pub const fn blocks_lower_layers(self) -> bool {
use WidgetKind::*;
matches!(self, Modal | ContextMenu | Popup)
}
}