1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/// The state of the mouse cursor.
#[derive(Debug, Eq, PartialEq, Clone, Copy)]
pub enum MouseCursor {
    /// The cursor is out of the bounds of the user interface.
    OutOfBounds,

    /// The cursor is over a non-interactive widget.
    Idle,

    /// The cursor is over a clickable widget.
    Pointer,

    /// The cursor is over a busy widget.
    Working,

    /// The cursor is over a grabbable widget.
    Grab,

    /// The cursor is grabbing a widget.
    Grabbing,
}

#[cfg(feature = "winit")]
impl From<MouseCursor> for winit::window::CursorIcon {
    fn from(mouse_cursor: MouseCursor) -> winit::window::CursorIcon {
        match mouse_cursor {
            MouseCursor::OutOfBounds => winit::window::CursorIcon::Default,
            MouseCursor::Idle => winit::window::CursorIcon::Default,
            MouseCursor::Pointer => winit::window::CursorIcon::Hand,
            MouseCursor::Working => winit::window::CursorIcon::Progress,
            MouseCursor::Grab => winit::window::CursorIcon::Grab,
            MouseCursor::Grabbing => winit::window::CursorIcon::Grabbing,
        }
    }
}