diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 1a20d60541c..461e908bcf9 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -1669,10 +1669,15 @@ LanguageClientValue ClientPrivate::showMessageBox( } QHash itemForButton; if (const std::optional> actions = message.actions()) { - for (const MessageActionItem &action : *actions) - itemForButton.insert(box->addButton(action.title(), QMessageBox::InvalidRole), action); + auto button = box->addButton(QMessageBox::Close); + connect(button, &QPushButton::clicked, box, &QMessageBox::reject); + for (const MessageActionItem &action : *actions) { + connect(button, &QPushButton::clicked, box, &QMessageBox::accept); + itemForButton.insert(button, action); + } } - box->exec(); + if (box->exec() == QDialog::Rejected) + return {}; const MessageActionItem &item = itemForButton.value(box->clickedButton()); return item.isValid() ? LanguageClientValue(item) : LanguageClientValue();