crate::event::enum_with_all! {
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum Cursor {
#[default]
Default,
Pointer,
Text,
NotAllowed,
Grab,
Grabbing,
Move,
EwResize,
NsResize,
NwseResize,
NeswResize,
ColResize,
RowResize,
Crosshair,
}
}
impl Cursor {
pub const fn css_name(self) -> &'static str {
match self {
Cursor::Default => "default",
Cursor::Pointer => "pointer",
Cursor::Text => "text",
Cursor::NotAllowed => "not-allowed",
Cursor::Grab => "grab",
Cursor::Grabbing => "grabbing",
Cursor::Move => "move",
Cursor::EwResize => "ew-resize",
Cursor::NsResize => "ns-resize",
Cursor::NwseResize => "nwse-resize",
Cursor::NeswResize => "nesw-resize",
Cursor::ColResize => "col-resize",
Cursor::RowResize => "row-resize",
Cursor::Crosshair => "crosshair",
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_is_default_variant() {
assert_eq!(Cursor::default(), Cursor::Default);
}
#[test]
fn css_names_match_the_css_cursor_property() {
assert_eq!(Cursor::NotAllowed.css_name(), "not-allowed");
assert_eq!(Cursor::EwResize.css_name(), "ew-resize");
assert_eq!(Cursor::NwseResize.css_name(), "nwse-resize");
assert_eq!(Cursor::ColResize.css_name(), "col-resize");
}
}