Use QMessageBox for toggleWarning if possible

Qt 5.2 introduces the possibility to place a checkbox on a QMessageBox,
so we need no longer to use our own crude dialog.

(cherry picked from commit 0148ef7e6c)
This commit is contained in:
Juergen Spitzmueller 2018-07-10 15:00:25 +02:00
parent 12ca81f2ea
commit 82cade4877
2 changed files with 22 additions and 3 deletions

View File

@ -32,9 +32,10 @@ namespace lyx {
namespace frontend { namespace frontend {
// FIXME: This dialog has issues with line breaking and size, in particular with // This dialog is only a fallback for Qt < 5.2, which does not feature
// html. But it could easily be reimplemented as a QMessageBox using // QMessageBox::setCheckBox() yet. Note that it has issues with line
// QMessageBox::setCheckBox() available starting from Qt 5.2 // breaking and size, in particular with html.
#if QT_VERSION < 0x050200
class GuiToggleWarningDialog : public QDialog, public Ui::ToggleWarningUi class GuiToggleWarningDialog : public QDialog, public Ui::ToggleWarningUi
{ {
public: public:
@ -44,6 +45,7 @@ public:
QDialog::setModal(true); QDialog::setModal(true);
} }
}; };
#endif
GuiProgress::GuiProgress() GuiProgress::GuiProgress()
@ -172,6 +174,9 @@ void GuiProgress::doToggleWarning(QString const & title, QString const & msg, QS
if (settings.value("hidden_warnings/" + msg, false).toBool()) if (settings.value("hidden_warnings/" + msg, false).toBool())
return; return;
// Qt < 5.2 does not feature QMessageBox::setCheckBox() yet,
// so we roll our own dialog.
#if QT_VERSION < 0x050200
GuiToggleWarningDialog * dlg = GuiToggleWarningDialog * dlg =
new GuiToggleWarningDialog(qApp->focusWidget()); new GuiToggleWarningDialog(qApp->focusWidget());
@ -183,6 +188,18 @@ void GuiProgress::doToggleWarning(QString const & title, QString const & msg, QS
if (dlg->dontShowAgainCB->isChecked()) if (dlg->dontShowAgainCB->isChecked())
settings.setValue("hidden_warnings/" settings.setValue("hidden_warnings/"
+ msg, true); + msg, true);
#else
QCheckBox * dontShowAgainCB = new QCheckBox();
dontShowAgainCB->setText(qt_("&Do not show this warning again!"));
dontShowAgainCB->setToolTip(qt_("If you check this, LyX will not warn you again in the given case."));
QMessageBox box(QMessageBox::Warning, title, formatted,
QMessageBox::Ok, qApp->focusWidget());
box.setCheckBox(dontShowAgainCB);
if (box.exec() == QMessageBox::Ok)
if (dontShowAgainCB->isChecked())
settings.setValue("hidden_warnings/"
+ msg, true);
#endif
} }

View File

@ -267,6 +267,8 @@ What's new
- Fix "New Inset" function in the Nomenclature list dialog. - Fix "New Inset" function in the Nomenclature list dialog.
- Improve warning message dialogs.
* INTERNALS * INTERNALS