From 4cf5b516d0dc63d4ff982d80cc5eae2783c6b97d Mon Sep 17 00:00:00 2001 From: Nicolas Fella Date: Thu, 1 Sep 2022 21:45:59 +0200 Subject: [PATCH] Extract code for obtaining a window from the QML engine into a function --- src/controller.cpp | 2 +- src/controller.h | 4 ++-- src/main.cpp | 35 +++++++++++++++++------------------ 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/controller.cpp b/src/controller.cpp index 7f3eab32f..1b8a0d6fd 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -589,7 +589,7 @@ void Controller::setActiveConnection(Connection *connection) Q_EMIT activeConnectionChanged(); } -void Controller::restoreWindowGeometry(QQuickWindow *window) +void Controller::restoreWindowGeometry(QWindow *window) { KConfig dataResource("data", KConfig::SimpleConfig, QStandardPaths::AppDataLocation); KConfigGroup windowGroup(&dataResource, "Window"); diff --git a/src/controller.h b/src/controller.h index 1e2e7c12a..441ad85cf 100644 --- a/src/controller.h +++ b/src/controller.h @@ -20,7 +20,7 @@ class QKeySequences; class NeoChatRoom; class NeoChatUser; class TrayIcon; -class QQuickWindow; +class QWindow; class QQuickTextDocument; namespace QKeychain @@ -146,7 +146,7 @@ public Q_SLOTS: void logout(Quotient::Connection *conn, bool serverSideLogout); void changeAvatar(Quotient::Connection *conn, const QUrl &localFile); static void markAllMessagesAsRead(Quotient::Connection *conn); - void restoreWindowGeometry(QQuickWindow *); + void restoreWindowGeometry(QWindow *); void saveWindowGeometry(QQuickWindow *); }; diff --git a/src/main.cpp b/src/main.cpp index 9c4f96ee1..4e21c2a1e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -110,6 +110,14 @@ static void raiseWindow(QWindow *window) } #endif +static QWindow *windowFromEngine(QQmlApplicationEngine *engine) +{ + const auto rootObjects = engine->rootObjects(); + auto *window = qobject_cast(rootObjects.first()); + Q_ASSERT(window); + return window; +} + #ifdef Q_OS_ANDROID Q_DECL_EXPORT #endif @@ -283,15 +291,9 @@ int main(int argc, char *argv[]) Q_UNUSED(workingDirectory); // Raise windows - const auto rootObjects = engine.rootObjects(); - for (auto obj : rootObjects) { - auto view = qobject_cast(obj); - if (view) { - view->show(); - raiseWindow(view); - return; - } - } + QWindow *window = windowFromEngine(&engine); + window->show(); + raiseWindow(window); // Open matrix uri if (arguments.isEmpty()) { @@ -304,15 +306,12 @@ int main(int argc, char *argv[]) } }); #endif - const auto rootObjects = engine.rootObjects(); - for (auto obj : rootObjects) { - auto view = qobject_cast(obj); - if (view) { - if (view->isVisible()) { - Controller::instance().restoreWindowGeometry(view); - } - break; - } + + QWindow *window = windowFromEngine(&engine); + + if (window->isVisible()) { + Controller::instance().restoreWindowGeometry(window); } + return app.exec(); }