summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2017-01-09 17:24:19 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2017-01-10 07:21:52 +0000
commitd135acfa43810b2f7a2dba12688bbaa07a2e08cc (patch)
treeb15b7918eba18699177486f9282a1ae03d61e262 /src
parent3d08f308f1ef6dc7ef3c1ea9cf7a9c7a067d024a (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.cpp16
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();