diff --git a/src/qtdesktop/qtaction.cpp b/src/qtdesktop/qtaction.cpp index a1a93d9cbc578679ffe97e6636b0b269da7a61a4..744e1cd2eabf7a9ca3fc5763aac96cba950e1453 100644 --- a/src/qtdesktop/qtaction.cpp +++ b/src/qtdesktop/qtaction.cpp @@ -180,15 +180,25 @@ void QtAction::setIconSource(const QUrl &iconSource) return; m_iconSource = iconSource; + QString iconName = m_icon.name(); + m_icon = QIcon(m_iconSource.toLocalFile()); + if (!iconName.isEmpty()) + m_icon = QIcon::fromTheme(iconName, m_icon); + emit iconSourceChanged(); } +QString QtAction::iconName() const +{ + return m_icon.name(); +} + void QtAction::setIconName(const QString &iconName) { - if (iconName == m_iconName) + if (iconName == m_icon.name()) return; - m_iconName = iconName; + m_icon = QIcon::fromTheme(iconName, QIcon(m_iconSource.toLocalFile())); emit iconNameChanged(); } diff --git a/src/qtdesktop/qtaction_p.h b/src/qtdesktop/qtaction_p.h index d4578367c417725690cf0aad1a00e278c82c78ef..d4db7b2e6cdd790c63ac092076dcc289fd01422f 100644 --- a/src/qtdesktop/qtaction_p.h +++ b/src/qtdesktop/qtaction_p.h @@ -81,7 +81,7 @@ public: QString mnemonic() const; void setMnemonic(const QString &mnemonic); - QString iconName() const { return m_iconName; } + QString iconName() const; void setIconName(const QString &iconName); QUrl iconSource() const { return m_iconSource; } @@ -102,6 +102,9 @@ public: QtExclusiveGroup *exclusiveGroup() const { return m_exclusiveGroup; } void setExclusiveGroup(QtExclusiveGroup * arg); + QIcon icon() const { return m_icon; } + void setIcon(QIcon icon) { m_icon = icon; } + bool event(QEvent *e); public Q_SLOTS: @@ -126,7 +129,7 @@ Q_SIGNALS: private: QString m_text; QUrl m_iconSource; - QString m_iconName; + QIcon m_icon; bool m_enabled; bool m_checkable; bool m_checked; diff --git a/src/qtdesktop/qtexclusivegroup_p.h b/src/qtdesktop/qtexclusivegroup_p.h index 94db2c0a2d41f858a2bd57b0217b29d6e5d0946b..7d980bd0dfb6d2f8784468685b5dd75d5f2ce826 100644 --- a/src/qtdesktop/qtexclusivegroup_p.h +++ b/src/qtdesktop/qtexclusivegroup_p.h @@ -41,8 +41,8 @@ #ifndef QTEXCLUSIVEGROUP_H #define QTEXCLUSIVEGROUP_H -#include <QObject> -#include <QtQml/QtQml> +#include <QtCore/QObject> +#include <QtCore/QMetaMethod> QT_BEGIN_NAMESPACE diff --git a/src/qtdesktop/qtmenuitem.cpp b/src/qtdesktop/qtmenuitem.cpp index dc19f72d80ef395dd1b1d201d7547748c1129bcd..592c6bf6bec3c4f6a09b4aff3bad6a20fa1e8548 100644 --- a/src/qtdesktop/qtmenuitem.cpp +++ b/src/qtdesktop/qtmenuitem.cpp @@ -390,12 +390,8 @@ void QtMenuItem::setIconSource(const QUrl &iconSource) void QtMenuItem::updateIconSource() { - QIcon icon = QIcon(iconSource().toLocalFile()); - if (!iconName().isEmpty()) - icon = QIcon::fromTheme(iconName(), icon); - if (platformItem()) { - platformItem()->setIcon(icon); + platformItem()->setIcon(m_action->icon()); syncWithPlatformMenu(); } emit iconSourceChanged(); @@ -413,10 +409,8 @@ void QtMenuItem::setIconName(const QString &iconName) void QtMenuItem::updateIconName() { - QIcon icon = QIcon::fromTheme(iconName(), QIcon(iconSource().toLocalFile())); - if (platformItem()) { - platformItem()->setIcon(icon); + platformItem()->setIcon(m_action->icon()); syncWithPlatformMenu(); } emit iconNameChanged();