summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/themes
diff options
context:
space:
mode:
Diffstat (limited to 'src/platformsupport/themes')
-rw-r--r--src/platformsupport/themes/genericunix/dbusmenu/qdbusmenubar.cpp2
-rw-r--r--src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu.cpp14
-rw-r--r--src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu_p.h9
-rw-r--r--src/platformsupport/themes/genericunix/dbustray/qdbustrayicon.cpp6
4 files changed, 24 insertions, 7 deletions
diff --git a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenubar.cpp b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenubar.cpp
index 76d658f51a..fb0705c8c7 100644
--- a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenubar.cpp
+++ b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenubar.cpp
@@ -59,6 +59,8 @@ QDBusMenuBar::QDBusMenuBar()
m_menuAdaptor, &QDBusMenuAdaptor::ItemsPropertiesUpdated);
connect(m_menu, &QDBusPlatformMenu::updated,
m_menuAdaptor, &QDBusMenuAdaptor::LayoutUpdated);
+ connect(m_menu, &QDBusPlatformMenu::popupRequested,
+ m_menuAdaptor, &QDBusMenuAdaptor::ItemActivationRequested);
}
QDBusMenuBar::~QDBusMenuBar()
diff --git a/src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu.cpp b/src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu.cpp
index 15440a03cd..c1ebbbf91b 100644
--- a/src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu.cpp
+++ b/src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu.cpp
@@ -39,6 +39,7 @@
#include "qdbusplatformmenu_p.h"
+#include <QDateTime>
#include <QDebug>
#include <QWindow>
@@ -210,6 +211,8 @@ void QDBusPlatformMenu::removeMenuItem(QPlatformMenuItem *menuItem)
this, &QDBusPlatformMenu::propertiesUpdated);
disconnect(menu, &QDBusPlatformMenu::updated,
this, &QDBusPlatformMenu::updated);
+ disconnect(menu, &QDBusPlatformMenu::popupRequested,
+ this, &QDBusPlatformMenu::popupRequested);
}
emitUpdated();
}
@@ -222,6 +225,8 @@ void QDBusPlatformMenu::syncSubMenu(const QDBusPlatformMenu *menu)
this, &QDBusPlatformMenu::propertiesUpdated, Qt::UniqueConnection);
connect(menu, &QDBusPlatformMenu::updated,
this, &QDBusPlatformMenu::updated, Qt::UniqueConnection);
+ connect(menu, &QDBusPlatformMenu::popupRequested,
+ this, &QDBusPlatformMenu::popupRequested, Qt::UniqueConnection);
}
void QDBusPlatformMenu::syncMenuItem(QPlatformMenuItem *menuItem)
@@ -278,6 +283,15 @@ void QDBusPlatformMenu::setContainingMenuItem(QDBusPlatformMenuItem *item)
m_containingMenuItem = item;
}
+void QDBusPlatformMenu::showPopup(const QWindow *parentWindow, const QRect &targetRect, const QPlatformMenuItem *item)
+{
+ Q_UNUSED(parentWindow);
+ Q_UNUSED(targetRect);
+ Q_UNUSED(item);
+ setVisible(true);
+ emit popupRequested(m_containingMenuItem->dbusID(), QDateTime::currentMSecsSinceEpoch());
+}
+
QPlatformMenuItem *QDBusPlatformMenu::menuItemAt(int position) const
{
return m_items.value(position);
diff --git a/src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu_p.h b/src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu_p.h
index 38c27e8051..2e6e04d28d 100644
--- a/src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu_p.h
+++ b/src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu_p.h
@@ -161,13 +161,7 @@ public:
void setMenuType(MenuType type) Q_DECL_OVERRIDE { Q_UNUSED(type); }
void setContainingMenuItem(QDBusPlatformMenuItem *item);
- void showPopup(const QWindow *parentWindow, const QRect &targetRect, const QPlatformMenuItem *item) Q_DECL_OVERRIDE
- {
- Q_UNUSED(parentWindow);
- Q_UNUSED(targetRect);
- Q_UNUSED(item);
- setVisible(true);
- }
+ void showPopup(const QWindow *parentWindow, const QRect &targetRect, const QPlatformMenuItem *item) Q_DECL_OVERRIDE;
void dismiss() Q_DECL_OVERRIDE { } // Closes this and all its related menu popups
@@ -187,6 +181,7 @@ public:
signals:
void updated(uint revision, int dbusId);
void propertiesUpdated(QDBusMenuItemList updatedProps, QDBusMenuItemKeysList removedProps);
+ void popupRequested(int id, uint timestamp);
private:
quintptr m_tag;
diff --git a/src/platformsupport/themes/genericunix/dbustray/qdbustrayicon.cpp b/src/platformsupport/themes/genericunix/dbustray/qdbustrayicon.cpp
index 5c4157c206..b55ace357a 100644
--- a/src/platformsupport/themes/genericunix/dbustray/qdbustrayicon.cpp
+++ b/src/platformsupport/themes/genericunix/dbustray/qdbustrayicon.cpp
@@ -171,6 +171,12 @@ QTemporaryFile *QDBusTrayIcon::tempIcon(const QIcon &icon)
uint pid = session.interface()->servicePid(KDEWatcherService).value();
QString processName = QLockFilePrivate::processNameByPid(pid);
necessary = processName.endsWith(QLatin1String("indicator-application-service"));
+ if (!necessary && QGuiApplication::desktopSettingsAware()) {
+ // Accessing to process name might be not allowed if the application
+ // is confined, thus we can just rely on the current desktop in use
+ const QPlatformServices *services = QGuiApplicationPrivate::platformIntegration()->services();
+ necessary = services->desktopEnvironment().split(':').contains("UNITY");
+ }
necessity_checked = true;
}
if (!necessary)