diff options
author | Prasanth Ullattil <prasanth.ullattil@nokia.com> | 2010-01-13 13:06:56 (GMT) |
---|---|---|
committer | Prasanth Ullattil <prasanth.ullattil@nokia.com> | 2010-01-14 10:33:46 (GMT) |
commit | e915c2408b2030b142dc309a9e4aba621341aa28 (patch) | |
tree | 62bc0386e6d6043511158975146e713dc299f4a7 /src/gui | |
parent | b095541b487ee2faaca27ff226502acb2f81c7d4 (diff) | |
download | Qt-e915c2408b2030b142dc309a9e4aba621341aa28.zip Qt-e915c2408b2030b142dc309a9e4aba621341aa28.tar.gz Qt-e915c2408b2030b142dc309a9e4aba621341aa28.tar.bz2 |
File dialog mode is not correctly updated in Mac (Cocoa).
QFileDialog shows a customized version of the native file dialog
on Mac. When user changes the fileMode, the corresponding
options needs to be updated in the native dialog as well. Some
options like mode, filters, button text, dialog title etc needs
to be updated for this.
This patch also address the changing of 'acceptMode'. When user
changes this, for e.g. the native dialog needs to switch from an
open panel to save panel. It is easier to recreate the internal
QNSOpenSavePanelDelegate than changing options individually.
Task-number: QTBUG-7086
Reviewed-by: Richard Moe Gustavsen
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/dialogs/qfiledialog.cpp | 15 | ||||
-rw-r--r-- | src/gui/dialogs/qfiledialog_mac.mm | 7 |
2 files changed, 16 insertions, 6 deletions
diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index 3d59463..21650bb 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -1222,12 +1222,6 @@ QFileDialog::ViewMode QFileDialog::viewMode() const void QFileDialog::setFileMode(QFileDialog::FileMode mode) { Q_D(QFileDialog); - if (d->nativeDialogInUse){ - d->model->setFilter(d->filterForMode(filter())); - d->setFilter_sys(); - return; - } - d->fileMode = mode; d->retranslateWindowTitle(); @@ -1263,6 +1257,11 @@ void QFileDialog::setFileMode(QFileDialog::FileMode mode) } } setLabelText(Accept, buttonText); + if (d->nativeDialogInUse){ + d->setFilter_sys(); + return; + } + d->qFileDialogUi->fileTypeCombo->setEnabled(!testOption(ShowDirsOnly)); d->_q_updateOkButton(); } @@ -1300,6 +1299,10 @@ void QFileDialog::setAcceptMode(QFileDialog::AcceptMode mode) d->qFileDialogUi->lookInCombo->setEditable(false); } d->retranslateWindowTitle(); +#if defined(Q_WS_MAC) + d->deleteNativeDialog_sys(); + setAttribute(Qt::WA_DontShowOnScreen, false); +#endif } /* diff --git a/src/gui/dialogs/qfiledialog_mac.mm b/src/gui/dialogs/qfiledialog_mac.mm index db5c356..67daced 100644 --- a/src/gui/dialogs/qfiledialog_mac.mm +++ b/src/gui/dialogs/qfiledialog_mac.mm @@ -639,9 +639,16 @@ void QFileDialogPrivate::setFilter_sys() { #ifndef QT_MAC_USE_COCOA #else + Q_Q(QFileDialog); QMacCocoaAutoReleasePool pool; QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate); *(delegate->mQDirFilter) = model->filter(); + delegate->mFileMode = fileMode; + [delegate->mSavePanel setTitle:qt_mac_QStringToNSString(q->windowTitle())]; + [delegate->mSavePanel setPrompt:[delegate strip:acceptLabel]]; + if (fileNameLabelExplicitlySat) + [delegate->mSavePanel setNameFieldLabel:[delegate strip:qFileDialogUi->fileNameLabel->text()]]; + [delegate updateProperties]; #endif } |