diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-12-02 09:10:10 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2020-12-02 15:45:19 +0000 |
commit | 6c5bae5704b6a5fc72f92b93cf220d7497951b4c (patch) | |
tree | 11e4c5c97c3e9f8381fdb16e9fa7c55ca560eba4 /src/quick | |
parent | 3e559aa76b55890586cd2c8b17041c8566937fe1 (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.
Change-Id: Iaa30e3d56768e97601d51d30500fc3b12d0626a3
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
(cherry picked from commit 8a555cc22afb93dbe0e0da83f211c6e4f032bd09)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/quick')
-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(); } } |