in native/desktop-macos/src/macos/cursor.rs [97:200]
fn new_ns_cursor(icon: CursorIcon) -> Retained<NSCursor> {
match icon {
CursorIcon::ArrowCursor => NSCursor::arrowCursor(),
CursorIcon::IBeamCursor => NSCursor::IBeamCursor(),
CursorIcon::CrosshairCursor => NSCursor::crosshairCursor(),
CursorIcon::ClosedHandCursor => NSCursor::closedHandCursor(),
CursorIcon::OpenHandCursor => NSCursor::openHandCursor(),
CursorIcon::PointingHandCursor => NSCursor::pointingHandCursor(),
CursorIcon::ColumnResizeLeftCursor => {
if available!(macos = 15.0) {
NSCursor::columnResizeCursorInDirections(NSHorizontalDirections::Left)
} else {
#[allow(deprecated)]
NSCursor::resizeLeftCursor()
}
}
CursorIcon::ColumnResizeRightCursor => {
if available!(macos = 15.0) {
NSCursor::columnResizeCursorInDirections(NSHorizontalDirections::Right)
} else {
#[allow(deprecated)]
NSCursor::resizeRightCursor()
}
}
CursorIcon::ColumnResizeLeftRightCursor => {
if available!(macos = 15.0) {
NSCursor::columnResizeCursorInDirections(NSHorizontalDirections::All)
} else {
#[allow(deprecated)]
NSCursor::resizeLeftRightCursor()
}
}
CursorIcon::RowResizeUpCursor => {
if available!(macos = 15.0) {
NSCursor::rowResizeCursorInDirections(NSVerticalDirections::Up)
} else {
#[allow(deprecated)]
NSCursor::resizeUpCursor()
}
}
CursorIcon::RowResizeDownCursor => {
if available!(macos = 15.0) {
NSCursor::rowResizeCursorInDirections(NSVerticalDirections::Down)
} else {
#[allow(deprecated)]
NSCursor::resizeDownCursor()
}
}
CursorIcon::RowResizeUpDownCursor => {
if available!(macos = 15.0) {
NSCursor::rowResizeCursorInDirections(NSVerticalDirections::All)
} else {
#[allow(deprecated)]
NSCursor::resizeUpDownCursor()
}
}
//todo see: https://github.com/rust-windowing/winit/issues/3724
CursorIcon::FrameResizeUpLeftDownRight => {
if available!(macos = 15.0) {
NSCursor::frameResizeCursorFromPosition_inDirections(
NSCursorFrameResizePosition::TopLeft,
NSCursorFrameResizeDirections::All,
)
} else {
unsafe { msg_send![NSCursor::class(), _windowResizeNorthWestSouthEastCursor] }
}
}
CursorIcon::FrameResizeUpRightDownLeft => {
if available!(macos = 15.0) {
NSCursor::frameResizeCursorFromPosition_inDirections(
NSCursorFrameResizePosition::TopRight,
NSCursorFrameResizeDirections::All,
)
} else {
unsafe { msg_send![NSCursor::class(), _windowResizeNorthEastSouthWestCursor] }
}
}
CursorIcon::DisappearingItemCursor => NSCursor::disappearingItemCursor(),
CursorIcon::IBeamCursorForVerticalLayout => NSCursor::IBeamCursorForVerticalLayout(),
CursorIcon::OperationNotAllowedCursor => NSCursor::operationNotAllowedCursor(),
CursorIcon::DragLinkCursor => NSCursor::dragLinkCursor(),
CursorIcon::DragCopyCursor => NSCursor::dragCopyCursor(),
CursorIcon::ContextualMenuCursor => NSCursor::contextualMenuCursor(),
CursorIcon::ZoomInCursor => {
if available!(macos = 15.0) {
NSCursor::zoomInCursor()
} else {
unsafe { msg_send![NSCursor::class(), _zoomInCursor] }
}
}
CursorIcon::ZoomOutCursor => {
if available!(macos = 15.0) {
NSCursor::zoomOutCursor()
} else {
unsafe { msg_send![NSCursor::class(), _zoomOutCursor] }
}
}
CursorIcon::Unknown => panic!("Can't create Unknown cursor"),
}
}