In KDE + Qt 5.5.1 cannot change system tray icon's context menu items
-
I have an app that needs to be able to update the context menu items of its system tray icon. We are using Qt 5.5.1 and we include the Qt libs with the app when we package it so we can't use the system libs. This works in other desktop environments but in KDE the context menu items cannot be changed. It happens in Kubuntu 12.04 until 15.10 and probably in other distributions as well (was able to confirm it on Debian too).
Steps to reproduce:
- Download Qt's official binary installer from https://download.qt.io/archive/qt/5.5/5.5.1/.
- Install required packages for Qt Creator. In Kubuntu 12.04 these are g++, libgl1-mesa-dev, and libglu1-mesa-dev.
- Download Qt project that contains minimal code to reproduce issue here: https://goo.gl/GZxO6q.
- Open Qt Creator: <Qt installation path>/Tools/QtCreator/bin/qtcreator.
- Open and run project.
- Right click on tray icon and click on the "On" entry. It should change to "Off" when the context menu is reopened.
Alternative way:
- Download the executable with Qt libraries here: https://goo.gl/FYLhIo. It's 64-bit.
- export LD_LIBRARY_PATH=/path/to/extracted/folder
- cd /path/to/extracted/folder
- ./systray
- Right click on tray icon and click on the "On" entry. It should change to "Off" when the context menu is reopened.
Reopening the tray icon's context menu still shows the "On" entry, it was not replaced with "Off". It should show "Off" instead, and clicking it should show "On".
Also in the Qt project's
tray.cpp
file,setContextMenu()
is called again after the context menu was updated with new items. This is probably a bug in Qt 5.5.1 since the context menu does not show the new items unlesssetContextMenu()
is called again. This happens on all desktop environments. -
Hi,
Did you check with the KDE folks whether it's something known ?