From 1aa4ac61f980b2044069e9b89b001d5d07430ac6 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Tue, 26 Nov 2013 16:27:17 +0100 Subject: QCocoaFileDialogHelper: Cache directory until delegate has been created MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-34393 Change-Id: Idee9e879e586afe25fd099d157ed7af88c17c4a3 Reviewed-by: Friedemann Kleint Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/cocoa/qcocoafiledialoghelper.h | 1 + src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.h b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.h index 8a8b1d946c..16d1ffbe85 100644 --- a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.h +++ b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.h @@ -82,6 +82,7 @@ public: private: void *mDelegate; + QUrl mDir; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm index 1ad833ee44..08505d91a2 100644 --- a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm +++ b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm @@ -610,6 +610,8 @@ void QCocoaFileDialogHelper::setDirectory(const QUrl &directory) QNSOpenSavePanelDelegate *delegate = static_cast(mDelegate); if (delegate) [delegate->mSavePanel setDirectoryURL:[NSURL fileURLWithPath:QCFString::toNSString(directory.toLocalFile())]]; + else + mDir = directory; } QUrl QCocoaFileDialogHelper::directory() const @@ -619,7 +621,7 @@ QUrl QCocoaFileDialogHelper::directory() const QString path = QCFString::toQString([[delegate->mSavePanel directoryURL] path]).normalized(QString::NormalizationForm_C); return QUrl::fromLocalFile(path); } - return QUrl(); + return mDir; } void QCocoaFileDialogHelper::selectFile(const QUrl &filename) @@ -707,7 +709,7 @@ void QCocoaFileDialogHelper::createNSOpenSavePanelDelegate() QCocoaAutoReleasePool pool; const SharedPointerFileDialogOptions &opts = options(); const QList selectedFiles = opts->initiallySelectedFiles(); - const QUrl directory = opts->initialDirectory(); + const QUrl directory = mDir.isEmpty() ? opts->initialDirectory() : mDir; const bool selectDir = selectedFiles.isEmpty(); QString selection(selectDir ? directory.toLocalFile() : selectedFiles.front().toLocalFile()); QNSOpenSavePanelDelegate *delegate = [[QNSOpenSavePanelDelegate alloc] -- cgit v1.2.3