diff --git a/.gitmodules b/.gitmodules index 53e7bea..44b34fb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,6 +2,6 @@ path = qmltermwidget url = https://github.com/Swordfish90/qmltermwidget branch = unstable -[submodule "singleapplication"] - path = singleapplication - url = https://github.com/itay-grudev/SingleApplication.git +[submodule "KDSingleApplication"] + path = KDSingleApplication + url = https://github.com/KDAB/KDSingleApplication.git diff --git a/KDSingleApplication b/KDSingleApplication new file mode 160000 index 0000000..1848dd6 --- /dev/null +++ b/KDSingleApplication @@ -0,0 +1 @@ +Subproject commit 1848dd64e80e37326da4a22b2c1f45f2a1c4f231 diff --git a/app/app.pro b/app/app.pro index ca301de..2c8286f 100644 --- a/app/app.pro +++ b/app/app.pro @@ -1,8 +1,7 @@ QT += qml quick widgets sql quickcontrols2 -DEFINES += QAPPLICATION_CLASS=QApplication TARGET = cool-retro-term -include(../singleapplication/singleapplication.pri) +include(../KDSingleApplication/kdsingleapplication.pri) DESTDIR = $$OUT_PWD/../ diff --git a/app/main.cpp b/app/main.cpp index f02d20f..6a7b094 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include @@ -80,12 +80,18 @@ int main(int argc, char *argv[]) return 0; } - SingleApplication app(argc, argv, true); + QApplication app(argc, argv); app.setAttribute(Qt::AA_MacDontSwapCtrlAndMeta, true); + app.setApplicationName(QStringLiteral("cool-retro-term")); + app.setOrganizationName(QStringLiteral("cool-retro-term")); + app.setOrganizationDomain(QStringLiteral("cool-retro-term")); - if (app.isSecondary()) { - app.sendMessage("new-window"); - return 0; + KDSingleApplication singleApp(QStringLiteral("cool-retro-term")); + + if (!singleApp.isPrimaryInstance()) { + if (singleApp.sendMessage("new-window")) + return 0; + qWarning() << "KDSingleApplication: primary not reachable, continuing as independent instance."; } QQmlApplicationEngine engine; @@ -101,9 +107,6 @@ int main(int argc, char *argv[]) app.setWindowIcon(QIcon(":../icons/32x32/cool-retro-term.png")); #endif - app.setOrganizationName("cool-retro-term"); - app.setOrganizationDomain("cool-retro-term"); - // Manage command line arguments from the cpp side QStringList args = app.arguments(); @@ -150,9 +153,8 @@ int main(int argc, char *argv[]) QMetaObject::invokeMethod(rootObject, "createWindow", Qt::QueuedConnection); }; - QObject::connect(&app, &SingleApplication::receivedMessage, &app, - [&requestNewWindow](quint32 instanceId, QByteArray message) { - Q_UNUSED(instanceId); + QObject::connect(&singleApp, &KDSingleApplication::messageReceived, &app, + [&requestNewWindow](const QByteArray &message) { if (message.isEmpty() || message == QByteArray("new-window")) requestNewWindow(); }); diff --git a/singleapplication b/singleapplication deleted file mode 160000 index a8da87d..0000000 --- a/singleapplication +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a8da87d78238ac9ac92d2cda41793d4879c188b3