diff --git a/applets/systemtray/statusnotifieritemjob.cpp b/applets/systemtray/statusnotifieritemjob.cpp index 01b74d7c3..2fa613827 100644 --- a/applets/systemtray/statusnotifieritemjob.cpp +++ b/applets/systemtray/statusnotifieritemjob.cpp @@ -7,6 +7,7 @@ #include "statusnotifieritemjob.h" #include +#include StatusNotifierItemJob::StatusNotifierItemJob(StatusNotifierItemSource *source, const QString &operation, QMap ¶meters, QObject *parent) : ServiceJob(source->objectName(), operation, parameters, parent) @@ -30,8 +31,10 @@ void StatusNotifierItemJob::start() QWindow *window = nullptr; const quint32 launchedSerial = KWindowSystem::lastInputSerial(window); - connect(KWindowSystem::self(), &KWindowSystem::xdgActivationTokenArrived, this, [this, launchedSerial](quint32 serial, const QString &token) { + auto conn = QSharedPointer::create(); + *conn = connect(KWindowSystem::self(), &KWindowSystem::xdgActivationTokenArrived, this, [this, launchedSerial, conn](quint32 serial, const QString &token) { if (serial == launchedSerial) { + disconnect(*conn); m_source->provideXdgActivationToken(token); performJob(); }