summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qcocoacursor.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoacursor.mm')
-rw-r--r--src/plugins/platforms/cocoa/qcocoacursor.mm48
1 files changed, 33 insertions, 15 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoacursor.mm b/src/plugins/platforms/cocoa/qcocoacursor.mm
index 3c1b67830f..99759424f9 100644
--- a/src/plugins/platforms/cocoa/qcocoacursor.mm
+++ b/src/plugins/platforms/cocoa/qcocoacursor.mm
@@ -134,24 +134,42 @@ NSCursor *QCocoaCursor::convertCursor(QCursor *cursor)
case Qt::DragLinkCursor:
cocoaCursor = [NSCursor dragLinkCursor];
break;
-#if !defined(QT_APPLE_NO_PRIVATE_APIS)
case Qt::SizeVerCursor:
- if ([NSCursor respondsToSelector:@selector(_windowResizeNorthSouthCursor)])
- cocoaCursor = [NSCursor _windowResizeNorthSouthCursor];
- break;
case Qt::SizeHorCursor:
- if ([NSCursor respondsToSelector:@selector(_windowResizeEastWestCursor)])
- cocoaCursor = [NSCursor _windowResizeEastWestCursor];
- break;
case Qt::SizeBDiagCursor:
- if ([NSCursor respondsToSelector:@selector(_windowResizeNorthEastSouthWestCursor)])
- cocoaCursor = [NSCursor _windowResizeNorthEastSouthWestCursor];
- break;
- case Qt::SizeFDiagCursor:
- if ([NSCursor respondsToSelector:@selector(_windowResizeNorthWestSouthEastCursor)])
- cocoaCursor = [NSCursor _windowResizeNorthWestSouthEastCursor];
- break;
+ case Qt::SizeFDiagCursor: {
+#if QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(150000)
+ if (@available(macOS 15, *)) {
+ auto position = [newShape]{
+ switch (newShape) {
+ case Qt::SizeVerCursor: return NSCursorFrameResizePositionTop;
+ case Qt::SizeHorCursor: return NSCursorFrameResizePositionLeft;
+ case Qt::SizeBDiagCursor: return NSCursorFrameResizePositionTopRight;
+ case Qt::SizeFDiagCursor: return NSCursorFrameResizePositionTopLeft;
+ default: Q_UNREACHABLE();
+ }
+ }();
+ cocoaCursor = [NSCursor frameResizeCursorFromPosition:position
+ inDirections:NSCursorFrameResizeDirectionsAll];
+ break;
+ }
+#endif // macOS 15 SDK
+#if !defined(QT_APPLE_NO_PRIVATE_APIS)
+ auto selector = [newShape]{
+ switch (newShape) {
+ case Qt::SizeVerCursor: return @selector(_windowResizeNorthSouthCursor);
+ case Qt::SizeHorCursor: return @selector(_windowResizeEastWestCursor);
+ case Qt::SizeBDiagCursor: return @selector(_windowResizeNorthEastSouthWestCursor);
+ case Qt::SizeFDiagCursor: return @selector(_windowResizeNorthWestSouthEastCursor);
+ default: Q_UNREACHABLE();
+ }
+ }();
+
+ if ([NSCursor respondsToSelector:selector])
+ cocoaCursor = [NSCursor performSelector:selector];
#endif // QT_APPLE_NO_PRIVATE_APIS
+ break;
+ }
default:
break;
}
@@ -240,7 +258,7 @@ NSCursor *QCocoaCursor::createCursorData(QCursor *cursor)
switch (cursor->shape()) {
case Qt::BitmapCursor: {
if (cursor->pixmap().isNull())
- return createCursorFromBitmap(cursor->bitmap(Qt::ReturnByValue), cursor->mask(Qt::ReturnByValue), hotspot);
+ return createCursorFromBitmap(cursor->bitmap(), cursor->mask(), hotspot);
else
return createCursorFromPixmap(cursor->pixmap(), hotspot);
break; }