diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2016-04-13 06:55:37 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2016-04-13 06:55:37 +0200 |
commit | b94773c9c838a0b3db1bced0bc8daf5b04aefc29 (patch) | |
tree | 4afe809fa3ac8a83f5eaf98d0b40d4bbf7b5fca4 /src/platformsupport | |
parent | c327fb79e1a50c825a945e97f2c66d07a1c6d225 (diff) | |
parent | 541c9d4d2acd045459c3e75eee80c63b36af9ed0 (diff) |
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
config.tests/unix/compile.test
src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
src/testlib/qtestcase.cpp
src/testlib/qtestcase.qdoc
Change-Id: Ied3c471dbc9a076c8de33d673bd557e88575609d
Diffstat (limited to 'src/platformsupport')
-rw-r--r-- | src/platformsupport/dbustray/qdbustrayicon.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/platformsupport/dbustray/qdbustrayicon.cpp b/src/platformsupport/dbustray/qdbustrayicon.cpp index 5351bc9f59..c8de50ebe1 100644 --- a/src/platformsupport/dbustray/qdbustrayicon.cpp +++ b/src/platformsupport/dbustray/qdbustrayicon.cpp @@ -53,13 +53,19 @@ #include <qloggingcategory.h> #include <qplatformintegration.h> #include <qplatformservices.h> +#include <qdbusconnectioninterface.h> +#include <private/qlockfile_p.h> #include <private/qguiapplication_p.h> +// Defined in Windows headers which get included by qlockfile_p.h +#undef interface + QT_BEGIN_NAMESPACE Q_LOGGING_CATEGORY(qLcTray, "qt.qpa.tray") static const QString KDEItemFormat = QStringLiteral("org.kde.StatusNotifierItem-%1-%2"); +static const QString KDEWatcherService = QStringLiteral("org.kde.StatusNotifierWatcher"); static const QString TempFileTemplate = QDir::tempPath() + QStringLiteral("/qt-trayicon-XXXXXX.png"); static const QString XdgNotificationService = QStringLiteral("org.freedesktop.Notifications"); static const QString XdgNotificationPath = QStringLiteral("/org/freedesktop/Notifications"); @@ -142,9 +148,17 @@ void QDBusTrayIcon::setStatus(const QString &status) QTemporaryFile *QDBusTrayIcon::tempIcon(const QIcon &icon) { - // Hack for Unity, which doesn't handle icons sent across D-Bus: + // Hack for indicator-application, which doesn't handle icons sent across D-Bus: // save the icon to a temp file and set the icon name to that filename. - static bool necessary = (QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment().split(':').contains("UNITY")); + static bool necessity_checked = false; + static bool necessary = false; + if (!necessity_checked) { + QDBusConnection session = QDBusConnection::sessionBus(); + uint pid = session.interface()->servicePid(KDEWatcherService).value(); + QString processName = QLockFilePrivate::processNameByPid(pid); + necessary = processName.endsWith(QStringLiteral("indicator-application-service")); + necessity_checked = true; + } if (!necessary) return Q_NULLPTR; QTemporaryFile *ret = new QTemporaryFile(TempFileTemplate, this); |