macOS + CMake: fix use of optional framework UniformTypeIdentifiers

This commit is contained in:
ManoloFLTK 2024-05-03 15:23:42 +02:00
parent 6238ede94d
commit 70b84b491b
2 changed files with 15 additions and 2 deletions

View File

@ -123,7 +123,19 @@ if(APPLE)
endif(NOT(${CMAKE_SYSTEM_VERSION} VERSION_LESS 17.0.0))
else()
set(FLTK_COCOA_FRAMEWORKS "-framework Cocoa")
if(NOT(${CMAKE_SYSTEM_VERSION} VERSION_LESS 20.0.0)) # a.k.a. macOS version 11.0
set(UTI_CONDITION FALSE)
string(LENGTH "${CMAKE_OSX_DEPLOYMENT_TARGET}" TARGET_LEN)
string(LENGTH "${CMAKE_SYSTEM_VERSION}" SDK_LEN)
if(TARGET_LEN GREATER 0)
if( ${CMAKE_OSX_DEPLOYMENT_TARGET} VERSION_GREATER_EQUAL 11.0)
set(UTI_CONDITION TRUE)
endif()
elseif(SDK_LEN GREATER 0)
if( ${CMAKE_SYSTEM_VERSION} VERSION_GREATER_EQUAL 20.0 )
set(UTI_CONDITION TRUE)
endif()
endif()
if(UTI_CONDITION) # a.k.a. macOS version 11.0
if (NOT (CMAKE_OSX_ARCHITECTURES STREQUAL "ppc" OR CMAKE_OSX_ARCHITECTURES STREQUAL "i386"))
list(APPEND FLTK_COCOA_FRAMEWORKS "-framework UniformTypeIdentifiers")
endif()

View File

@ -532,7 +532,8 @@ static char *prepareMacFilter(int count, const char *filter, char **patterns) {
- (void)control_allowed_types:(const char *)p
{
NSString *ext = [NSString stringWithUTF8String:p];
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_11_0
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_11_0 && \
MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_VERSION_11_0
if (fl_mac_os_version >= 110000) {
UTType *type = [UTType typeWithFilenameExtension:ext]; // 11.0 + framework UniformTypeIdentifiers
[dialog setAllowedContentTypes:[NSArray arrayWithObject:type]]; // 11.0