diff options
Diffstat (limited to 'src/corelib/platform/darwin/qdarwinpermissionplugin_location.mm')
-rw-r--r-- | src/corelib/platform/darwin/qdarwinpermissionplugin_location.mm | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/corelib/platform/darwin/qdarwinpermissionplugin_location.mm b/src/corelib/platform/darwin/qdarwinpermissionplugin_location.mm index 3676ba0963..1d32c0fcac 100644 --- a/src/corelib/platform/darwin/qdarwinpermissionplugin_location.mm +++ b/src/corelib/platform/darwin/qdarwinpermissionplugin_location.mm @@ -73,6 +73,11 @@ struct PermissionRequest return Qt::PermissionStatus::Denied; } +#if defined(Q_OS_VISIONOS) + if (permission.availability() == QLocationPermission::Always) + return Qt::PermissionStatus::Denied; +#endif + auto status = [self authorizationStatus]; switch (status) { case kCLAuthorizationStatusRestricted: @@ -80,9 +85,11 @@ struct PermissionRequest return Qt::PermissionStatus::Denied; case kCLAuthorizationStatusNotDetermined: return Qt::PermissionStatus::Undetermined; +#if !defined(Q_OS_VISIONOS) case kCLAuthorizationStatusAuthorizedAlways: return Qt::PermissionStatus::Granted; -#ifdef Q_OS_IOS +#endif +#if defined(Q_OS_IOS) || defined(Q_OS_VISIONOS) case kCLAuthorizationStatusAuthorizedWhenInUse: if (permission.availability() == QLocationPermission::Always) return Qt::PermissionStatus::Denied; @@ -177,6 +184,9 @@ struct PermissionRequest } break; case QLocationPermission::Always: +#if defined(Q_OS_VISIONOS) + [self deliverResult]; // Not supported +#else // The documentation specifies that requestAlwaysAuthorization can only // be called when the current authorization status is either undetermined, // or authorized when in use. @@ -199,6 +209,7 @@ struct PermissionRequest default: [self deliverResult]; } +#endif break; } } |