From 7de02e230c4069c7ad440ea9eb2a1ffdf9bd631f Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 14 Jun 2023 13:07:32 +0200 Subject: [PATCH] QMessageBox: Remove include of qdebug.h Move the implementation qRequireVersion() to prevent having to include qdebug.h which pulls in many other headers. Amends b5d874e36fd39fa6e57ff27db27ae0b029949749. Fix missing include introduced by 3a553507a134bee1562d34ebbf786a053d36fc05. Task-number: QTBUG-114214 Task-number: QTBUG-97601 Change-Id: Iba68ffca95061666d9458ffa5700d07c7669da5b Reviewed-by: Axel Spoerl Reviewed-by: Qt CI Bot (cherry picked from commit 408fbd3f2d7a6b87521f5b3c27ecf6341dc06e13) Reviewed-by: Qt Cherry-pick Bot --- examples/xml/dombookmarks/mainwindow.cpp | 1 + src/widgets/dialogs/qmessagebox.cpp | 22 ++++++++++++++++++++++ src/widgets/dialogs/qmessagebox.h | 20 +++----------------- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/examples/xml/dombookmarks/mainwindow.cpp b/examples/xml/dombookmarks/mainwindow.cpp index f5320519f29..b28773f1160 100644 --- a/examples/xml/dombookmarks/mainwindow.cpp +++ b/examples/xml/dombookmarks/mainwindow.cpp @@ -4,6 +4,7 @@ #include "mainwindow.h" #include "xbeltree.h" +#include #include #include #include diff --git a/src/widgets/dialogs/qmessagebox.cpp b/src/widgets/dialogs/qmessagebox.cpp index 58e846b16b9..dde15fbaf33 100644 --- a/src/widgets/dialogs/qmessagebox.cpp +++ b/src/widgets/dialogs/qmessagebox.cpp @@ -30,11 +30,17 @@ #include "private/qabstractbutton_p.h" #include +#include +#include +#include + #ifdef Q_OS_WIN # include #include #endif +#include + QT_BEGIN_NAMESPACE using namespace Qt::StringLiterals; @@ -2841,6 +2847,22 @@ void QMessageBoxPrivate::helperDone(QDialog::DialogCode code, QPlatformDialogHel clickedButton = button; } +Q_WIDGETS_EXPORT void _q_requireVersion(int argc, char *argv[], QAnyStringView req) +{ + const auto required = QVersionNumber::fromString(req).normalized(); + const auto current = QVersionNumber::fromString(qVersion()).normalized(); + if (current >= required) + return; + std::unique_ptr application; + if (!qApp) + application = std::make_unique(argc, argv); + const QString message = QApplication::tr("Application \"%1\" requires Qt %2, found Qt %3.") + .arg(qAppName(), required.toString(), current.toString()); + QMessageBox::critical(nullptr, QApplication::tr("Incompatible Qt Library Error"), + message, QMessageBox::Abort); + qFatal("%s", qPrintable(message)); +} + #if QT_DEPRECATED_SINCE(6,2) /*! \deprecated diff --git a/src/widgets/dialogs/qmessagebox.h b/src/widgets/dialogs/qmessagebox.h index 161719e180b..2dee2e9204f 100644 --- a/src/widgets/dialogs/qmessagebox.h +++ b/src/widgets/dialogs/qmessagebox.h @@ -5,17 +5,13 @@ #define QMESSAGEBOX_H #include -#include #include -#include -#include -#include - QT_REQUIRE_CONFIG(messagebox); QT_BEGIN_NAMESPACE +class QAnyStringView; class QLabel; class QMessageBoxPrivate; class QAbstractButton; @@ -319,18 +315,8 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QMessageBox::StandardButtons) [[maybe_unused]] static inline void qRequireVersion(int argc, char *argv[], QAnyStringView req) { - const auto required = QVersionNumber::fromString(req).normalized(); - const auto current = QVersionNumber::fromString(qVersion()).normalized(); - if (current >= required) - return; - std::unique_ptr application; - if (!qApp) - application = std::make_unique(argc, argv); - const QString message = QApplication::tr("Application \"%1\" requires Qt %2, found Qt %3.") - .arg(qAppName(), required.toString(), current.toString()); - QMessageBox::critical(nullptr, QApplication::tr("Incompatible Qt Library Error"), - message, QMessageBox::Abort); - qFatal().noquote() << message; + Q_WIDGETS_EXPORT void _q_requireVersion(int, char *[], QAnyStringView); + _q_requireVersion(argc, argv, req); } #define QT_REQUIRE_VERSION(argc, argv, str) qRequireVersion(argc, argv, str);