From 17f0d474133ca1d902e5bbba9d50784fcbfa06e2 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Tue, 23 Aug 2022 12:49:05 +0400 Subject: [PATCH] QDBusTrayIcon: add xdg-activation support [ChangeLog][QtGui][Linux/Wayland] StatusNotifierItem tray implementation supports getting window focus token from desktop environments supporting the ProvideXdgActivationToken extension (e.g. KDE) Change-Id: Idcd79a4224b74d6eedfcf1b90129b1a2d3e14312 Reviewed-by: Shawn Rutledge Reviewed-by: Liang Qi (cherry picked from commit c81d5ec19a3bb85a4b8197bd3176dc873c3b7a68) Reviewed-by: Qt Cherry-pick Bot --- .../platform/unix/dbustray/qstatusnotifieritemadaptor.cpp | 6 ++++++ .../platform/unix/dbustray/qstatusnotifieritemadaptor_p.h | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/src/gui/platform/unix/dbustray/qstatusnotifieritemadaptor.cpp b/src/gui/platform/unix/dbustray/qstatusnotifieritemadaptor.cpp index 27a14e408ac..2f6c13b6cfe 100644 --- a/src/gui/platform/unix/dbustray/qstatusnotifieritemadaptor.cpp +++ b/src/gui/platform/unix/dbustray/qstatusnotifieritemadaptor.cpp @@ -136,6 +136,12 @@ void QStatusNotifierItemAdaptor::ContextMenu(int x, int y) emit m_trayIcon->activated(QPlatformSystemTrayIcon::Context); } +void QStatusNotifierItemAdaptor::ProvideXdgActivationToken(const QString &token) +{ + qCDebug(qLcTray) << token; + qputenv("XDG_ACTIVATION_TOKEN", token.toUtf8()); +} + void QStatusNotifierItemAdaptor::Scroll(int w, const QString &s) { qCDebug(qLcTray) << w << s; diff --git a/src/gui/platform/unix/dbustray/qstatusnotifieritemadaptor_p.h b/src/gui/platform/unix/dbustray/qstatusnotifieritemadaptor_p.h index 286aafa9bb4..103fc974ddf 100644 --- a/src/gui/platform/unix/dbustray/qstatusnotifieritemadaptor_p.h +++ b/src/gui/platform/unix/dbustray/qstatusnotifieritemadaptor_p.h @@ -73,6 +73,9 @@ class QStatusNotifierItemAdaptor: public QDBusAbstractAdaptor " \n" " \n" " \n" +" \n" +" \n" +" \n" " \n" " \n" " \n" @@ -150,6 +153,7 @@ public: // PROPERTIES public Q_SLOTS: // METHODS void Activate(int x, int y); void ContextMenu(int x, int y); + void ProvideXdgActivationToken(const QString &token); void Scroll(int delta, const QString &orientation); void SecondaryActivate(int x, int y); Q_SIGNALS: // SIGNALS