summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/widgets/dialogs/qmessagebox.cpp10
-rw-r--r--tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp6
2 files changed, 16 insertions, 0 deletions
diff --git a/src/widgets/dialogs/qmessagebox.cpp b/src/widgets/dialogs/qmessagebox.cpp
index 52ca88891e..6de952a1d3 100644
--- a/src/widgets/dialogs/qmessagebox.cpp
+++ b/src/widgets/dialogs/qmessagebox.cpp
@@ -1022,6 +1022,16 @@ void QMessageBoxPrivate::detectEscapeButton()
return;
}
+ // If there are two buttons and one of them is the "Show Details..."
+ // button, then make the other one the escape button
+ if (buttons.count() == 2 && detailsButton) {
+ auto idx = buttons.indexOf(detailsButton);
+ if (idx != -1) {
+ detectedEscapeButton = buttons.at(1 - idx);
+ return;
+ }
+ }
+
// if the message box has one RejectRole button, make it the escape button
for (auto *button : buttons) {
if (buttonBox->buttonRole(button) == QDialogButtonBox::RejectRole) {
diff --git a/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp b/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp
index a5058f4b6c..70f5c40bcc 100644
--- a/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp
+++ b/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp
@@ -329,6 +329,12 @@ void tst_QMessageBox::escapeButton()
closeHelper.start(ExecCloseHelper::CloseWindow, &msgBox2);
msgBox2.exec();
QVERIFY(msgBox2.clickedButton() == msgBox2.button(QMessageBox::No)); // auto detected (one No button only)
+
+ QMessageBox msgBox3;
+ msgBox3.setDetailedText("Details");
+ closeHelper.start(ExecCloseHelper::CloseWindow, &msgBox3);
+ msgBox3.exec();
+ QVERIFY(msgBox3.clickedButton() == msgBox3.button(QMessageBox::Ok)); // auto detected
}
void tst_QMessageBox::statics()