From cc79c9b9e2d134c77110c04d3980da4a57aba76f Mon Sep 17 00:00:00 2001 From: Wang Zichong Date: Fri, 19 Dec 2025 16:03:06 +0800 Subject: [PATCH] fix: process damage notify event --- fdoselectionmanager.cpp | 8 ++------ traymanager1.cpp | 14 ++++++++++++-- traymanager1.h | 2 +- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/fdoselectionmanager.cpp b/fdoselectionmanager.cpp index d0e6dfb..e31b947 100644 --- a/fdoselectionmanager.cpp +++ b/fdoselectionmanager.cpp @@ -132,12 +132,8 @@ bool FdoSelectionManager::nativeEventFilter(const QByteArray &eventType, void *m undock(destroyedWId); } } else if (responseType == m_damageEventBase + XCB_DAMAGE_NOTIFY) { - // const auto damagedWId = reinterpret_cast(ev)->drawable; - // const auto tmProxy = m_proxies.value(damagedWId); - // if (tmProxy) { - // tmProxy->update(); - // xcb_damage_subtract(m_x11Interface->connection(), m_damageWatches[damagedWId], XCB_NONE, XCB_NONE); - // } + const auto damagedWId = reinterpret_cast(ev)->drawable; + m_trayManager->notifyIconChanged(damagedWId); } else if (responseType == XCB_CONFIGURE_REQUEST) { // const auto event = reinterpret_cast(ev); // const auto tmProxy = m_proxies.value(event->window); diff --git a/traymanager1.cpp b/traymanager1.cpp index 1f8941a..a65f2c4 100644 --- a/traymanager1.cpp +++ b/traymanager1.cpp @@ -53,6 +53,11 @@ void TrayManager1::notifyIconChanged(xcb_window_t win) return; } + if (!m_icons[win]) { + qCDebug(SNIPROXY) << "EnableNotification is false, not sending changed signal for:" << win; + return; + } + qCDebug(SNIPROXY) << "Icon changed:" << win; Q_EMIT Changed(static_cast(win)); } @@ -88,6 +93,11 @@ QString TrayManager1::GetName(uint32_t win) void TrayManager1::EnableNotification(uint32_t win, bool enabled) { - // TODO: Implement - qCDebug(SNIPROXY) << "TODO: EnableNotification for" << win << "=" << enabled; + if (!m_icons.contains(win)) { + return; + } + + m_icons[win] = enabled; + + qCDebug(SNIPROXY) << "EnableNotification for" << win << "=" << enabled; } diff --git a/traymanager1.h b/traymanager1.h index d0f6df7..4f41eff 100644 --- a/traymanager1.h +++ b/traymanager1.h @@ -76,5 +76,5 @@ Q_SIGNALS: private: TrayManager1Adaptor * m_adaptor; - QHash m_icons; + QHash m_icons; // };