aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-12-02 09:10:10 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2020-12-02 15:45:19 +0000
commit6c5bae5704b6a5fc72f92b93cf220d7497951b4c (patch)
tree11e4c5c97c3e9f8381fdb16e9fa7c55ca560eba4 /src/quick
parent3e559aa76b55890586cd2c8b17041c8566937fe1 (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.cpp25
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();
}
}