mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-19 20:44:16 +02:00
Show the logo in the Linux system tray
The tray icon was QET::Icons::QETLogo, which comes from QElectroTech's own icon theme bundled in its resources and so carries the theme name "qet". On Linux Qt's StatusNotifierItem then sends only that name, and the panel -- another process, without those resources -- cannot resolve it: KDE Plasma showed an empty slot. Seen on D-Bus as IconName "qet" and no IconPixmap. The tray now gets an icon made of the logo's pixmaps only (16 to 256 px), which the tray sends as pixels. Checked on Plasma: IconName is empty and IconPixmap carries the eight sizes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+12
-1
@@ -3053,7 +3053,18 @@ void QETApp::initSystemTray()
|
||||
|
||||
// initialization of the systray icon
|
||||
// initialisation de l'icone du systray
|
||||
m_qsti = new QSystemTrayIcon(QET::Icons::QETLogo, this);
|
||||
//Pixels only: the logo comes from QElectroTech's own icon theme,
|
||||
//bundled in its resources, so it carries the theme name "qet".
|
||||
//On Linux the tray (StatusNotifierItem) then sends only that name,
|
||||
//which the panel -- another process, without those resources --
|
||||
//cannot resolve, and the slot stays empty.
|
||||
QIcon tray_icon;
|
||||
for (int size : {16, 22, 24, 32, 48, 64, 128, 256}) {
|
||||
const QPixmap pixmap = QET::Icons::QETLogo.pixmap(QSize(size, size));
|
||||
if (!pixmap.isNull())
|
||||
tray_icon.addPixmap(pixmap);
|
||||
}
|
||||
m_qsti = new QSystemTrayIcon(tray_icon.isNull() ? QET::Icons::QETLogo : tray_icon, this);
|
||||
m_qsti -> setToolTip(tr("QElectroTech", "systray icon tooltip"));
|
||||
connect(m_qsti, &QSystemTrayIcon::activated, this, &QETApp::systray);
|
||||
m_qsti -> setContextMenu(menu_systray);
|
||||
|
||||
Reference in New Issue
Block a user