diff --git a/containments/taskpanel/taskpanel.cpp b/containments/taskpanel/taskpanel.cpp index 21a0de09..00ea6fcd 100644 --- a/containments/taskpanel/taskpanel.cpp +++ b/containments/taskpanel/taskpanel.cpp @@ -146,7 +146,13 @@ void TaskPanel::updateActiveWindow() if (!m_windowManagement) { return; } + if (m_activeWindow) { + disconnect(m_activeWindow, &KWayland::Client::PlasmaWindow::closeableChanged, this, &TaskPanel::hasCloseableActiveWindowChanged); + } m_activeWindow = m_windowManagement->activeWindow(); + + connect(m_activeWindow, &KWayland::Client::PlasmaWindow::closeableChanged, this, &TaskPanel::hasCloseableActiveWindowChanged); + // TODO: connect to closeableChanged, not needed right now as KWin doesn't provide this changeable emit hasCloseableActiveWindowChanged(); } diff --git a/containments/taskpanel/taskpanel.h b/containments/taskpanel/taskpanel.h index ff3548a5..10a57706 100644 --- a/containments/taskpanel/taskpanel.h +++ b/containments/taskpanel/taskpanel.h @@ -82,7 +82,7 @@ private: KWayland::Client::PlasmaShell *m_shellInterface = nullptr; KWayland::Client::PlasmaWindowManagement *m_windowManagement = nullptr; KWayland::Client::PlasmaWindowModel *m_windowModel = nullptr; - KWayland::Client::PlasmaWindow *m_activeWindow = nullptr; + QPointer m_activeWindow; }; #endif