diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-01-09 17:24:19 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-01-10 07:21:52 +0000 |
commit | d135acfa43810b2f7a2dba12688bbaa07a2e08cc (patch) | |
tree | b15b7918eba18699177486f9282a1ae03d61e262 /src | |
parent | 3d08f308f1ef6dc7ef3c1ea9cf7a9c7a067d024a (diff) |
Windows QPA: Implement setting the "Cancel" button text of file dialogs
The functionality was missing in IFileDialog. As of Windows 7;
IFileDialog can be queried for IFileDialog2, which provides it.
Task-number: QTBUG-44112
Change-Id: I0c0345d516bbc36f9bb519545f5eda1289c9ef23
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/platforms/windows/qwindowsdialoghelpers.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp index 94257bd4ac..5680819210 100644 --- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp +++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp @@ -1001,6 +1001,13 @@ void QWindowsNativeFileDialogBase::setDefaultSuffixSys(const QString &s) m_fileDialog->SetDefaultExtension(wSuffix); } +static inline IFileDialog2 *getFileDialog2(IFileDialog *fileDialog) +{ + IFileDialog2 *result; + return SUCCEEDED(fileDialog->QueryInterface(IID_IFileDialog2, reinterpret_cast<void **>(&result))) + ? result : nullptr; +} + void QWindowsNativeFileDialogBase::setLabelText(QFileDialogOptions::DialogLabel l, const QString &text) { wchar_t *wText = const_cast<wchar_t *>(reinterpret_cast<const wchar_t *>(text.utf16())); @@ -1011,8 +1018,13 @@ void QWindowsNativeFileDialogBase::setLabelText(QFileDialogOptions::DialogLabel case QFileDialogOptions::Accept: m_fileDialog->SetOkButtonLabel(wText); break; - case QFileDialogOptions::LookIn: case QFileDialogOptions::Reject: + if (IFileDialog2 *dialog2 = getFileDialog2(m_fileDialog)) { + dialog2->SetCancelButtonLabel(wText); + dialog2->Release(); + } + break; + case QFileDialogOptions::LookIn: case QFileDialogOptions::FileType: case QFileDialogOptions::DialogLabelCount: break; @@ -1347,6 +1359,8 @@ QWindowsNativeDialogBase *QWindowsFileDialogHelper::createNativeDialog() result->setLabelText(QFileDialogOptions::FileName, opts->labelText(QFileDialogOptions::FileName)); if (opts->isLabelExplicitlySet(QFileDialogOptions::Accept)) result->setLabelText(QFileDialogOptions::Accept, opts->labelText(QFileDialogOptions::Accept)); + if (opts->isLabelExplicitlySet(QFileDialogOptions::Reject)) + result->setLabelText(QFileDialogOptions::Reject, opts->labelText(QFileDialogOptions::Reject)); result->updateDirectory(); result->updateSelectedNameFilter(); const QList<QUrl> initialSelection = opts->initiallySelectedFiles(); |