diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2023-06-29 15:42:36 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2023-06-30 14:05:13 +0200 |
commit | 8fbce6b4a04ba9712e45340afc9b52fe2966f125 (patch) | |
tree | 02a57efbe0c87a7bb4ac9403bf60d12c7a106968 /src/plugins/platforms/cocoa | |
parent | d766caa429a759670c42e0590f1bd27b19bf6187 (diff) |
macOS: Enable dirs in file dialogs, also when treating bundles as dirs
In our NSOpenSavePanelDelegate we respond to panel:shouldEnableURL:
with YES if it's a directory or symlink to a directory, which matches
the native behavior.
But the panel has a special flag to treat bundles as directories instead
of files. We were checking this flag, but ignoring the case where it
was actually set (which it normally is not), and as a result would
go on to filter directory names as well.
We now handle both cases, and only call [NSWorkspace isFilePackageAtPath:]
if needed (when the treatsFilePackagesAsDirectories flag is not set).
Pick-to: 6.5 6.6 6.2
Change-Id: I2b9a16ff99b4b643389acc042c032813f432ac59
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/plugins/platforms/cocoa')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm index 91d76fa254..c67909f33a 100644 --- a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm +++ b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm @@ -223,10 +223,9 @@ typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions; NSString *fileType = fileAttrs.fileType; bool isDir = [fileType isEqualToString:NSFileTypeDirectory]; if (isDir) { - if (!m_panel.treatsFilePackagesAsDirectories) { - if ([NSWorkspace.sharedWorkspace isFilePackageAtPath:filename] == NO) - return YES; - } + bool treatBundlesAsFiles = !m_panel.treatsFilePackagesAsDirectories; + if (!(treatBundlesAsFiles && [NSWorkspace.sharedWorkspace isFilePackageAtPath:filename])) + return YES; } // Treat symbolic links and aliases to directories like directories |