diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-12-02 09:10:10 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-12-02 12:06:19 +0000 |
commit | 8a555cc22afb93dbe0e0da83f211c6e4f032bd09 (patch) | |
tree | 92e8fb5b41e860ab62123141c2bd3b706a2ac9b2 /src/quick/util | |
parent | 1ba57c41a9d71060ddc1aa515bccd57f2fab82e8 (diff) |
Quick: Fortify QQuickApplication ctor
If the qApp we have is in fact not a QGuiApplication we cannot
connect those signals. The "if (qApp)" was probably supposed to check
for this but actually doesn't because qApp is a static_cast.
Pick-to: 6.0
Change-Id: Iaa30e3d56768e97601d51d30500fc3b12d0626a3
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/quick/util')
-rw-r--r-- | src/quick/util/qquickapplication.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/quick/util/qquickapplication.cpp b/src/quick/util/qquickapplication.cpp index 1c0522451a..fa67823824 100644 --- a/src/quick/util/qquickapplication.cpp +++ b/src/quick/util/qquickapplication.cpp @@ -58,18 +58,19 @@ QT_BEGIN_NAMESPACE QQuickApplication::QQuickApplication(QObject *parent) : QQmlApplication(parent) { - if (qApp) { - connect(qApp, SIGNAL(layoutDirectionChanged(Qt::LayoutDirection)), - this, SIGNAL(layoutDirectionChanged())); - connect(qApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)), - this, SIGNAL(stateChanged(Qt::ApplicationState))); - connect(qApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)), - this, SIGNAL(activeChanged())); - connect(qApp, SIGNAL(applicationDisplayNameChanged()), - this, SIGNAL(displayNameChanged())); - - connect(qApp, &QGuiApplication::screenAdded, this, &QQuickApplication::updateScreens); - connect(qApp, &QGuiApplication::screenRemoved, this, &QQuickApplication::updateScreens); + QCoreApplication *app = QCoreApplication::instance(); + if (QGuiApplication *guiApp = qobject_cast<QGuiApplication *>(app)) { + connect(guiApp, &QGuiApplication::layoutDirectionChanged, + this, &QQuickApplication::layoutDirectionChanged); + connect(guiApp, &QGuiApplication::applicationStateChanged, + this, &QQuickApplication::stateChanged); + connect(guiApp, &QGuiApplication::applicationStateChanged, + this, &QQuickApplication::activeChanged); + connect(guiApp, &QGuiApplication::applicationDisplayNameChanged, + this, &QQuickApplication::displayNameChanged); + + connect(guiApp, &QGuiApplication::screenAdded, this, &QQuickApplication::updateScreens); + connect(guiApp, &QGuiApplication::screenRemoved, this, &QQuickApplication::updateScreens); updateScreens(); } } |