Changeset View
Changeset View
Standalone View
Standalone View
kate/katerunninginstanceinfo.cpp
Show All 17 Lines | 1 | /* SPDX-License-Identifier: LGPL-2.0-or-later | |||
---|---|---|---|---|---|
18 | Boston, MA 02110-1301, USA. | 18 | Boston, MA 02110-1301, USA. | ||
19 | */ | 19 | */ | ||
20 | 20 | | |||
21 | #include "katerunninginstanceinfo.h" | 21 | #include "katerunninginstanceinfo.h" | ||
22 | #include <QCoreApplication> | 22 | #include <QCoreApplication> | ||
23 | #include <QDBusConnectionInterface> | 23 | #include <QDBusConnectionInterface> | ||
24 | #include <QDBusReply> | 24 | #include <QDBusReply> | ||
25 | #include <QStringList> | 25 | #include <QStringList> | ||
26 | #include <QFileInfo> | ||||
27 | #include <QRegularExpression> | ||||
26 | 28 | | |||
27 | int KateRunningInstanceInfo::dummy_session = 0; | 29 | int KateRunningInstanceInfo::dummy_session = 0; | ||
28 | 30 | | |||
29 | bool fillinRunningKateAppInstances(KateRunningInstanceMap *map) | 31 | bool fillinRunningKateAppInstances(KateRunningInstanceMap *map) | ||
30 | { | 32 | { | ||
31 | QDBusConnectionInterface *i = QDBusConnection::sessionBus().interface(); | 33 | QDBusConnectionInterface *i = QDBusConnection::sessionBus().interface(); | ||
32 | if (!i) { | 34 | if (!i) { | ||
33 | return true; // we do not know about any others... | 35 | return true; // we do not know about any others... | ||
34 | } | 36 | } | ||
35 | 37 | | |||
36 | // look up all running kate instances and there sessions | 38 | // look up all running kate instances and there sessions | ||
37 | QDBusReply<QStringList> servicesReply = i->registeredServiceNames(); | 39 | QDBusReply<QStringList> servicesReply = i->registeredServiceNames(); | ||
38 | QStringList services; | 40 | QStringList services; | ||
39 | if (servicesReply.isValid()) { | 41 | if (servicesReply.isValid()) { | ||
40 | services = servicesReply.value(); | 42 | services = servicesReply.value(); | ||
41 | } | 43 | } | ||
42 | 44 | | |||
43 | QString serviceName; | 45 | const bool inSandbox = QFileInfo::exists(QStringLiteral("/flatpak-info")); | ||
44 | 46 | const QString my_pid = inSandbox ? QDBusConnection::sessionBus().baseService().replace(QRegularExpression(QStringLiteral("[\\.:]")), QStringLiteral("_")) | |||
45 | QString my_pid = QString::number(QCoreApplication::applicationPid()); | 47 | : QString::number(QCoreApplication::applicationPid()); | ||
46 | 48 | | |||
47 | for (const QString &s : qAsConst(services)) { | 49 | for (const QString &s : qAsConst(services)) { | ||
48 | if (s.startsWith(QLatin1String("org.kde.kate-"))) { | 50 | if (s.startsWith(QLatin1String("org.kde.kate")) && !s.endsWith(my_pid)) { | ||
49 | if (s.contains(my_pid)) { | | |||
50 | continue; | | |||
51 | } | | |||
52 | KateRunningInstanceInfo *rii = new KateRunningInstanceInfo(s); | 51 | KateRunningInstanceInfo *rii = new KateRunningInstanceInfo(s); | ||
53 | if (rii->valid) { | 52 | if (rii->valid) { | ||
54 | if (map->contains(rii->sessionName)) { | 53 | if (map->contains(rii->sessionName)) { | ||
55 | return false; // ERROR no two instances may have the same session name | 54 | return false; // ERROR no two instances may have the same session name | ||
56 | } | 55 | } | ||
57 | map->insert(rii->sessionName, rii); | 56 | map->insert(rii->sessionName, rii); | ||
58 | // std::cerr<<qPrintable(s)<<"running instance:"<< rii->sessionName.toUtf8().data()<<std::endl; | 57 | // std::cerr<<qPrintable(s)<<"running instance:"<< rii->sessionName.toUtf8().data()<<std::endl; | ||
59 | } else { | 58 | } else { | ||
Show All 14 Lines |