dbustray: Use separate D-Bus connections for each tray icon
This allows applications to use two or more QSystemTrayIcons. Task-number: QTBUG-53021 Change-Id: I520db99c1c3718906669d1b544d44a8d2f71e1ce Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>bb10
parent
feaef44559
commit
f199bb9133
|
|
@ -59,9 +59,10 @@ const QString MenuBarPath = QLatin1String("/MenuBar");
|
|||
A D-Bus connection which is used for both menu and tray icon services.
|
||||
Connects to the session bus and registers with the respective watcher services.
|
||||
*/
|
||||
QDBusMenuConnection::QDBusMenuConnection(QObject *parent)
|
||||
QDBusMenuConnection::QDBusMenuConnection(QObject *parent, const QString &serviceName)
|
||||
: QObject(parent)
|
||||
, m_connection(QDBusConnection::sessionBus())
|
||||
, m_connection(serviceName.isNull() ? QDBusConnection::sessionBus()
|
||||
: QDBusConnection::connectToBus(QDBusConnection::SessionBus, serviceName))
|
||||
, m_dbusWatcher(new QDBusServiceWatcher(StatusNotifierWatcherService, m_connection, QDBusServiceWatcher::WatchForRegistration, this))
|
||||
, m_statusNotifierHostRegistered(false)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ class QDBusMenuConnection : public QObject
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QDBusMenuConnection(QObject *parent = 0);
|
||||
QDBusMenuConnection(QObject *parent = 0, const QString &serviceName = QString());
|
||||
QDBusConnection connection() const { return m_connection; }
|
||||
bool isStatusNotifierHostRegistered() const { return m_statusNotifierHostRegistered; }
|
||||
#ifndef QT_NO_SYSTEMTRAYICON
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ QTemporaryFile *QDBusTrayIcon::tempIcon(const QIcon &icon)
|
|||
QDBusMenuConnection * QDBusTrayIcon::dBusConnection()
|
||||
{
|
||||
if (!m_dbusConnection) {
|
||||
m_dbusConnection = new QDBusMenuConnection(this);
|
||||
m_dbusConnection = new QDBusMenuConnection(this, m_instanceId);
|
||||
m_notifier = new QXdgNotificationInterface(XdgNotificationService,
|
||||
XdgNotificationPath, m_dbusConnection->connection(), this);
|
||||
connect(m_notifier, SIGNAL(NotificationClosed(uint,uint)), this, SLOT(notificationClosed(uint,uint)));
|
||||
|
|
|
|||
Loading…
Reference in New Issue