From 75b49a59db98254ce85bc8f1da08938f4fbb63f8 Mon Sep 17 00:00:00 2001 From: Dmitry Shachnev Date: Thu, 29 Sep 2016 22:22:35 +0300 Subject: dbustray: Support replacing menu on QDBusTrayIcon If a new menu is set via the updateMenu() method, properly unregister the old menu and register the new one. Task-number: QTBUG-53676 Change-Id: I8c1ea2d171caec01488f0fe8a565bc9b2f7e431e Reviewed-by: Shawn Rutledge --- src/platformsupport/dbusmenu/qdbusmenuconnection.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/platformsupport/dbusmenu/qdbusmenuconnection.cpp') diff --git a/src/platformsupport/dbusmenu/qdbusmenuconnection.cpp b/src/platformsupport/dbusmenu/qdbusmenuconnection.cpp index 2a0bb8878e..b6682d6b67 100644 --- a/src/platformsupport/dbusmenu/qdbusmenuconnection.cpp +++ b/src/platformsupport/dbusmenu/qdbusmenuconnection.cpp @@ -89,6 +89,12 @@ bool QDBusMenuConnection::registerTrayIconMenu(QDBusTrayIcon *item) return success; } +void QDBusMenuConnection::unregisterTrayIconMenu(QDBusTrayIcon *item) +{ + if (item->menu()) + connection().unregisterObject(MenuBarPath); +} + bool QDBusMenuConnection::registerTrayIcon(QDBusTrayIcon *item) { bool success = connection().registerService(item->instanceId()); @@ -118,7 +124,7 @@ bool QDBusMenuConnection::registerTrayIcon(QDBusTrayIcon *item) bool QDBusMenuConnection::unregisterTrayIcon(QDBusTrayIcon *item) { - connection().unregisterObject(MenuBarPath); + unregisterTrayIconMenu(item); connection().unregisterObject(StatusNotifierItemPath); bool success = connection().unregisterService(item->instanceId()); if (!success) -- cgit v1.2.3