diff --git a/src/trayicon_sni.cpp b/src/trayicon_sni.cpp index 734a85924..b4b33530a 100644 --- a/src/trayicon_sni.cpp +++ b/src/trayicon_sni.cpp @@ -4,6 +4,8 @@ #include "trayicon_sni.h" #include +#include "windowcontroller.h" + TrayIcon::TrayIcon(QObject *parent) : KStatusNotifierItem(parent) { @@ -13,6 +15,12 @@ TrayIcon::TrayIcon(QObject *parent) KWindowSystem::setCurrentXdgActivationToken(providedToken()); Q_EMIT showWindow(); }); + + connect(&WindowController::instance(), &WindowController::windowChanged, this, [this] { +#if QT_VERSION > QT_VERSION_CHECK(6, 0, 0) + setAssociatedWindow(WindowController::instance().window()); +#endif + }); } void TrayIcon::show() diff --git a/src/windowcontroller.cpp b/src/windowcontroller.cpp index 9431a40cd..6f46de71c 100644 --- a/src/windowcontroller.cpp +++ b/src/windowcontroller.cpp @@ -24,6 +24,13 @@ WindowController &WindowController::instance() void WindowController::setWindow(QWindow *window) { m_window = window; + + Q_EMIT windowChanged(); +} + +QWindow *WindowController::window() const +{ + return m_window; } void WindowController::restoreGeometry() diff --git a/src/windowcontroller.h b/src/windowcontroller.h index 4f8225258..06fa09a2a 100644 --- a/src/windowcontroller.h +++ b/src/windowcontroller.h @@ -14,11 +14,15 @@ public: static WindowController &instance(); void setWindow(QWindow *window); + QWindow *window() const; void restoreGeometry(); void saveGeometry(); void showAndRaiseWindow(const QString &startupId); +Q_SIGNALS: + void windowChanged(); + private: WindowController() = default;