summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/dbustray/qdbustrayicon.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-10-08 17:15:55 +0200
committerLiang Qi <liang.qi@qt.io>2016-10-08 17:15:55 +0200
commit3e71810cf3153e4331fc075a73b6408adcf33654 (patch)
tree9f5fbb7a5dc2a902b380dd69a222c0f2cd6eb760 /src/platformsupport/dbustray/qdbustrayicon.cpp
parent6feec9da93032d11a768802ac2187d9d4153b1ec (diff)
parentebd1046323615f22192055a94438bf85fc360ca3 (diff)
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts: src/network/access/qhttpnetworkconnection.cpp src/network/access/qhttpnetworkconnection_p.h Change-Id: I11f8641ef482efa8cee1b79977d19cc3182814b4
Diffstat (limited to 'src/platformsupport/dbustray/qdbustrayicon.cpp')
-rw-r--r--src/platformsupport/dbustray/qdbustrayicon.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/platformsupport/dbustray/qdbustrayicon.cpp b/src/platformsupport/dbustray/qdbustrayicon.cpp
index 1d8e430f3e..8ad641c3a7 100644
--- a/src/platformsupport/dbustray/qdbustrayicon.cpp
+++ b/src/platformsupport/dbustray/qdbustrayicon.cpp
@@ -213,20 +213,21 @@ QPlatformMenu *QDBusTrayIcon::createMenu() const
void QDBusTrayIcon::updateMenu(QPlatformMenu * menu)
{
qCDebug(qLcTray) << menu;
- bool needsRegistering = !m_menu;
- if (!m_menu)
- m_menu = qobject_cast<QDBusPlatformMenu *>(menu);
- if (!m_menuAdaptor) {
+ QDBusPlatformMenu *newMenu = qobject_cast<QDBusPlatformMenu *>(menu);
+ if (m_menu != newMenu) {
+ if (m_menu) {
+ dBusConnection()->unregisterTrayIconMenu(this);
+ delete m_menuAdaptor;
+ }
+ m_menu = newMenu;
m_menuAdaptor = new QDBusMenuAdaptor(m_menu);
// TODO connect(m_menu, , m_menuAdaptor, SIGNAL(ItemActivationRequested(int,uint)));
connect(m_menu, SIGNAL(propertiesUpdated(QDBusMenuItemList,QDBusMenuItemKeysList)),
m_menuAdaptor, SIGNAL(ItemsPropertiesUpdated(QDBusMenuItemList,QDBusMenuItemKeysList)));
connect(m_menu, SIGNAL(updated(uint,int)),
m_menuAdaptor, SIGNAL(LayoutUpdated(uint,int)));
- }
- m_menu->emitUpdated();
- if (needsRegistering)
dBusConnection()->registerTrayIconMenu(this);
+ }
}
void QDBusTrayIcon::showMessage(const QString &title, const QString &msg, const QIcon &icon,