diff --git a/reminder/browserintegrationreminder.h b/reminder/browserintegrationreminder.h --- a/reminder/browserintegrationreminder.h +++ b/reminder/browserintegrationreminder.h @@ -65,6 +65,7 @@ private: QHash m_browsers; QPointer m_sni; + QDBusServiceWatcher *m_watcher = nullptr; bool m_debug; int m_shownCount; }; diff --git a/reminder/browserintegrationreminder.cpp b/reminder/browserintegrationreminder.cpp --- a/reminder/browserintegrationreminder.cpp +++ b/reminder/browserintegrationreminder.cpp @@ -47,6 +47,8 @@ "browserintegrationreminder.json", registerPlugin();) +static const QString s_dbusServiceName = QStringLiteral("org.kde.plasma.browser_integration"); + #define MAX_SHOW_COUNT 3 BrowserIntegrationReminder::BrowserIntegrationReminder(QObject *parent, const QList&) @@ -117,7 +119,18 @@ return; } - if (bus.interface()->isServiceRegistered(QStringLiteral("org.kde.plasma.browser_integration")) && !m_debug) { + if (!m_watcher) { + m_watcher = new QDBusServiceWatcher(s_dbusServiceName, bus, QDBusServiceWatcher::WatchForRegistration, this); + connect(m_watcher, &QDBusServiceWatcher::serviceRegistered, this, [this](const QString &service) { + Q_UNUSED(service); + if (m_sni) { + m_sni->deleteLater(); + disableAutoload(); + } + }); + } + + if (!m_debug && bus.interface()->isServiceRegistered(s_dbusServiceName)) { //the user has the extension installed, we don't need to keep checking //env var exists for easier testing disableAutoload();