diff --git a/src/platformtheme/kdeplatformsystemtrayicon.h b/src/platformtheme/kdeplatformsystemtrayicon.h --- a/src/platformtheme/kdeplatformsystemtrayicon.h +++ b/src/platformtheme/kdeplatformsystemtrayicon.h @@ -22,6 +22,7 @@ #include #include +#include class KStatusNotifierItem; class SystemTrayMenuItem; @@ -56,9 +57,9 @@ QString m_text; QIcon m_icon; - bool m_enabled; - bool m_visible; - bool m_separatorsCollapsible; + QVariant m_enabled; + QVariant m_visible; + QVariant m_separatorsCollapsible; quintptr m_tag; QPointer m_menu; QList m_items; diff --git a/src/platformtheme/kdeplatformsystemtrayicon.cpp b/src/platformtheme/kdeplatformsystemtrayicon.cpp --- a/src/platformtheme/kdeplatformsystemtrayicon.cpp +++ b/src/platformtheme/kdeplatformsystemtrayicon.cpp @@ -29,9 +29,9 @@ SystemTrayMenu::SystemTrayMenu() : QPlatformMenu() - , m_enabled(true) - , m_visible(true) - , m_separatorsCollapsible(true) + , m_enabled(QVariant::Bool) + , m_visible(QVariant::Bool) + , m_separatorsCollapsible(QVariant::Bool) , m_tag(0) { } @@ -177,11 +177,21 @@ connect(m_menu, &QMenu::aboutToShow, this, &QPlatformMenu::aboutToShow); connect(m_menu, &QMenu::aboutToHide, this, &QPlatformMenu::aboutToHide); - m_menu->setEnabled(m_enabled); - m_menu->setIcon(m_icon); - m_menu->setTitle(m_text); - m_menu->setVisible(m_visible); - m_menu->setSeparatorsCollapsible(m_separatorsCollapsible); + if (!m_icon.isNull()) { + m_menu->setIcon(m_icon); + } + if (m_menu->title() != m_text) { + m_menu->setTitle(m_text); + } + if (!m_enabled.isNull()) { + m_menu->setEnabled(m_enabled.toBool()); + } + if (!m_visible.isNull()) { + m_menu->setVisible(m_visible.toBool()); + } + if (!m_separatorsCollapsible.isNull()) { + m_menu->setSeparatorsCollapsible(m_separatorsCollapsible.toBool()); + } for (auto item : m_items) { m_menu->addAction(item->action()); }