summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2023-06-29 15:42:36 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2023-06-30 14:05:13 +0200
commit8fbce6b4a04ba9712e45340afc9b52fe2966f125 (patch)
tree02a57efbe0c87a7bb4ac9403bf60d12c7a106968 /src/plugins/platforms/cocoa
parentd766caa429a759670c42e0590f1bd27b19bf6187 (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.mm7
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