From 9feb81883c3d663c376369426968f1f0deaf06f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Tinkl?= Date: Mon, 15 Aug 2022 11:01:19 +0200 Subject: [PATCH] fix: abort startup on QML errors exit() the app immediately after encountering QML errors on startup task: status-im/status-desktop#7013 --- lib/src/DOtherSide.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lib/src/DOtherSide.cpp b/lib/src/DOtherSide.cpp index 866bf35..3f936d7 100644 --- a/lib/src/DOtherSide.cpp +++ b/lib/src/DOtherSide.cpp @@ -343,6 +343,15 @@ void dos_qqmlapplicationengine_setNetworkAccessManagerFactory(::DosQQmlApplicati void dos_qqmlapplicationengine_load(::DosQQmlApplicationEngine *vptr, const char *filename) { auto engine = static_cast(vptr); + QObject::connect( + engine, &QQmlApplicationEngine::objectCreated, qGuiApp, + [](QObject *obj, const QUrl &objUrl) { + if (!obj) { + qWarning() << "Error while loading QML:" << objUrl; + QCoreApplication::exit(EXIT_FAILURE); + } + }, + Qt::QueuedConnection); engine->load(QUrl::fromLocalFile(QGuiApplication::applicationDirPath() + QDir::separator() + QString(filename))); } @@ -350,6 +359,15 @@ void dos_qqmlapplicationengine_load_url(::DosQQmlApplicationEngine *vptr, ::DosQ { auto engine = static_cast(vptr); auto qurl = static_cast(url); + QObject::connect( + engine, &QQmlApplicationEngine::objectCreated, qGuiApp, + [](QObject *obj, const QUrl &objUrl) { + if (!obj) { + qWarning() << "Error while loading QML:" << objUrl; + QCoreApplication::exit(EXIT_FAILURE); + } + }, + Qt::QueuedConnection); engine->load(*qurl); }