@@ -5,7 +5,10 @@ use std::sync::OnceLock;
55use objc2:: rc:: Retained ;
66use objc2:: runtime:: Sel ;
77use objc2:: { AllocAnyThread , ClassType , available, msg_send, sel} ;
8- use objc2_app_kit:: { NSBitmapImageRep , NSCursor , NSDeviceRGBColorSpace , NSImage } ;
8+ use objc2_app_kit:: {
9+ NSBitmapImageRep , NSCursor , NSCursorFrameResizeDirections , NSCursorFrameResizePosition ,
10+ NSDeviceRGBColorSpace , NSImage ,
11+ } ;
912use objc2_foundation:: {
1013 NSData , NSDictionary , NSNumber , NSObject , NSPoint , NSSize , NSString , ns_string,
1114} ;
@@ -204,23 +207,99 @@ pub(crate) fn cursor_from_icon(icon: CursorIcon) -> Retained<NSCursor> {
204207 CursorIcon :: NotAllowed | CursorIcon :: NoDrop => NSCursor :: operationNotAllowedCursor ( ) ,
205208 CursorIcon :: ContextMenu => NSCursor :: contextualMenuCursor ( ) ,
206209 CursorIcon :: Crosshair => NSCursor :: crosshairCursor ( ) ,
210+ CursorIcon :: EResize if available ! ( macos = 15.0 ) => {
211+ NSCursor :: frameResizeCursorFromPosition_inDirections (
212+ NSCursorFrameResizePosition :: Right ,
213+ NSCursorFrameResizeDirections :: Outward ,
214+ )
215+ } ,
207216 CursorIcon :: EResize => NSCursor :: resizeRightCursor ( ) ,
217+ CursorIcon :: NResize if available ! ( macos = 15.0 ) => {
218+ NSCursor :: frameResizeCursorFromPosition_inDirections (
219+ NSCursorFrameResizePosition :: Top ,
220+ NSCursorFrameResizeDirections :: Outward ,
221+ )
222+ } ,
208223 CursorIcon :: NResize => NSCursor :: resizeUpCursor ( ) ,
224+ CursorIcon :: WResize if available ! ( macos = 15.0 ) => {
225+ NSCursor :: frameResizeCursorFromPosition_inDirections (
226+ NSCursorFrameResizePosition :: Left ,
227+ NSCursorFrameResizeDirections :: Outward ,
228+ )
229+ } ,
209230 CursorIcon :: WResize => NSCursor :: resizeLeftCursor ( ) ,
231+ CursorIcon :: SResize if available ! ( macos = 15.0 ) => {
232+ NSCursor :: frameResizeCursorFromPosition_inDirections (
233+ NSCursorFrameResizePosition :: Bottom ,
234+ NSCursorFrameResizeDirections :: Outward ,
235+ )
236+ } ,
210237 CursorIcon :: SResize => NSCursor :: resizeDownCursor ( ) ,
211- CursorIcon :: EwResize | CursorIcon :: ColResize => NSCursor :: resizeLeftRightCursor ( ) ,
212- CursorIcon :: NsResize | CursorIcon :: RowResize => NSCursor :: resizeUpDownCursor ( ) ,
213- CursorIcon :: Help => _helpCursor ( ) ,
214- CursorIcon :: ZoomIn if available ! ( macos = 15.0 ) => NSCursor :: zoomInCursor ( ) ,
215- CursorIcon :: ZoomIn => _zoomInCursor ( ) ,
216- CursorIcon :: ZoomOut if available ! ( macos = 15.0 ) => NSCursor :: zoomOutCursor ( ) ,
217- CursorIcon :: ZoomOut => _zoomOutCursor ( ) ,
238+ CursorIcon :: EwResize if available ! ( macos = 15.0 ) => {
239+ NSCursor :: frameResizeCursorFromPosition_inDirections (
240+ NSCursorFrameResizePosition :: Right ,
241+ NSCursorFrameResizeDirections :: All ,
242+ )
243+ } ,
244+ CursorIcon :: EwResize => NSCursor :: resizeLeftRightCursor ( ) ,
245+ CursorIcon :: NsResize if available ! ( macos = 15.0 ) => {
246+ NSCursor :: frameResizeCursorFromPosition_inDirections (
247+ NSCursorFrameResizePosition :: Top ,
248+ NSCursorFrameResizeDirections :: All ,
249+ )
250+ } ,
251+ CursorIcon :: NsResize => NSCursor :: resizeUpDownCursor ( ) ,
252+ CursorIcon :: NeResize if available ! ( macos = 15.0 ) => {
253+ NSCursor :: frameResizeCursorFromPosition_inDirections (
254+ NSCursorFrameResizePosition :: TopRight ,
255+ NSCursorFrameResizeDirections :: Outward ,
256+ )
257+ } ,
218258 CursorIcon :: NeResize => _windowResizeNorthEastCursor ( ) ,
259+ CursorIcon :: NwResize if available ! ( macos = 15.0 ) => {
260+ NSCursor :: frameResizeCursorFromPosition_inDirections (
261+ NSCursorFrameResizePosition :: TopLeft ,
262+ NSCursorFrameResizeDirections :: Outward ,
263+ )
264+ } ,
219265 CursorIcon :: NwResize => _windowResizeNorthWestCursor ( ) ,
266+ CursorIcon :: SeResize if available ! ( macos = 15.0 ) => {
267+ NSCursor :: frameResizeCursorFromPosition_inDirections (
268+ NSCursorFrameResizePosition :: BottomRight ,
269+ NSCursorFrameResizeDirections :: Outward ,
270+ )
271+ } ,
220272 CursorIcon :: SeResize => _windowResizeSouthEastCursor ( ) ,
273+ CursorIcon :: SwResize if available ! ( macos = 15.0 ) => {
274+ NSCursor :: frameResizeCursorFromPosition_inDirections (
275+ NSCursorFrameResizePosition :: BottomLeft ,
276+ NSCursorFrameResizeDirections :: Outward ,
277+ )
278+ } ,
221279 CursorIcon :: SwResize => _windowResizeSouthWestCursor ( ) ,
280+ CursorIcon :: NeswResize if available ! ( macos = 15.0 ) => {
281+ NSCursor :: frameResizeCursorFromPosition_inDirections (
282+ NSCursorFrameResizePosition :: TopRight ,
283+ NSCursorFrameResizeDirections :: All ,
284+ )
285+ } ,
222286 CursorIcon :: NeswResize => _windowResizeNorthEastSouthWestCursor ( ) ,
287+ CursorIcon :: NwseResize if available ! ( macos = 15.0 ) => {
288+ NSCursor :: frameResizeCursorFromPosition_inDirections (
289+ NSCursorFrameResizePosition :: TopLeft ,
290+ NSCursorFrameResizeDirections :: All ,
291+ )
292+ } ,
223293 CursorIcon :: NwseResize => _windowResizeNorthWestSouthEastCursor ( ) ,
294+ CursorIcon :: ColResize if available ! ( macos = 15.0 ) => NSCursor :: columnResizeCursor ( ) ,
295+ CursorIcon :: ColResize => NSCursor :: resizeLeftRightCursor ( ) ,
296+ CursorIcon :: RowResize if available ! ( macos = 15.0 ) => NSCursor :: rowResizeCursor ( ) ,
297+ CursorIcon :: RowResize => NSCursor :: resizeUpDownCursor ( ) ,
298+ CursorIcon :: ZoomIn if available ! ( macos = 15.0 ) => NSCursor :: zoomInCursor ( ) ,
299+ CursorIcon :: ZoomIn => _zoomInCursor ( ) ,
300+ CursorIcon :: ZoomOut if available ! ( macos = 15.0 ) => NSCursor :: zoomOutCursor ( ) ,
301+ CursorIcon :: ZoomOut => _zoomOutCursor ( ) ,
302+ CursorIcon :: Help => _helpCursor ( ) ,
224303 // This is the wrong semantics for `Wait`, but it's the same as
225304 // what's used in Safari and Chrome.
226305 CursorIcon :: Wait | CursorIcon :: Progress => busyButClickableCursor ( ) ,
0 commit comments