fn new_ns_cursor()

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"),
        }
    }