diff options
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm index bdf185d275..1344ed75d9 100644 --- a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm +++ b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm @@ -74,6 +74,8 @@ QT_USE_NAMESPACE typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions; +static const int kReturnCodeNotSet = -1; + @implementation QNSOpenSavePanelDelegate { @public NSOpenPanel *mOpenPanel; @@ -110,7 +112,7 @@ typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions; if ([mSavePanel respondsToSelector:@selector(setLevel:)]) [mSavePanel setLevel:NSModalPanelWindowLevel]; - mReturnCode = -1; + mReturnCode = kReturnCodeNotSet; mHelper = helper; mNameFilterDropDownList = new QStringList(mOptions->nameFilters()); QString selectedVisualNameFilter = mOptions->initiallySelectedNameFilter(); @@ -177,6 +179,10 @@ static QString strippedText(QString s) - (void)closePanel { + // An already closed/closing panel has its return code set + if (mReturnCode != kReturnCodeNotSet) + return; + *mCurrentSelection = QString::fromNSString([[mSavePanel URL] path]).normalized(QString::NormalizationForm_C); if ([mSavePanel respondsToSelector:@selector(close)]) [mSavePanel close]; |