diff --git a/src/gui/kernel/qplatformmenu.h b/src/gui/kernel/qplatformmenu.h index 298dd5dd68b..b4f4fc8a5db 100644 --- a/src/gui/kernel/qplatformmenu.h +++ b/src/gui/kernel/qplatformmenu.h @@ -55,6 +55,7 @@ #include #include #include +#include QT_BEGIN_HEADER @@ -73,7 +74,7 @@ public: virtual quintptr tag()const = 0; virtual void setText(const QString &text) = 0; - virtual void setIcon(const QImage &icon) = 0; + virtual void setIcon(const QIcon &icon) = 0; virtual void setMenu(QPlatformMenu *menu) = 0; virtual void setVisible(bool isVisible) = 0; virtual void setIsSeparator(bool isSeparator) = 0; diff --git a/src/plugins/platforms/cocoa/qcocoamenuitem.h b/src/plugins/platforms/cocoa/qcocoamenuitem.h index 4a063d59658..f96f6fd91f2 100644 --- a/src/plugins/platforms/cocoa/qcocoamenuitem.h +++ b/src/plugins/platforms/cocoa/qcocoamenuitem.h @@ -69,7 +69,7 @@ public: { return m_tag; } void setText(const QString &text); - void setIcon(const QImage &icon); + void setIcon(const QIcon &icon); void setMenu(QPlatformMenu *menu); void setVisible(bool isVisible); void setIsSeparator(bool isSeparator); @@ -97,7 +97,7 @@ private: NSMenuItem *m_native; QString m_text; - QImage m_icon; + QIcon m_icon; QCocoaMenu *m_menu; bool m_isVisible; bool m_enabled; diff --git a/src/plugins/platforms/cocoa/qcocoamenuitem.mm b/src/plugins/platforms/cocoa/qcocoamenuitem.mm index abaffd211ac..b70506697e9 100644 --- a/src/plugins/platforms/cocoa/qcocoamenuitem.mm +++ b/src/plugins/platforms/cocoa/qcocoamenuitem.mm @@ -114,7 +114,7 @@ void QCocoaMenuItem::setText(const QString &text) m_text = qt_mac_removeAmpersandEscapes(text); } -void QCocoaMenuItem::setIcon(const QImage &icon) +void QCocoaMenuItem::setIcon(const QIcon &icon) { m_icon = icon; } @@ -306,8 +306,9 @@ NSMenuItem *QCocoaMenuItem::sync() } if (!m_icon.isNull()) { - NSImage *img = qt_mac_cgimage_to_nsimage(qt_mac_image_to_cgimage(m_icon)); + NSImage *img = static_cast(qt_mac_create_nsimage(m_icon.pixmap(16, QIcon::Normal))); [m_native setImage: img]; + [img release]; } [m_native setState:m_checked ? NSOnState : NSOffState]; diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp index 4747d1c661b..b201179661a 100644 --- a/src/widgets/widgets/qmenu.cpp +++ b/src/widgets/widgets/qmenu.cpp @@ -2830,7 +2830,8 @@ void copyActionToPlatformItem(const QAction *action, QPlatformMenuItem* item) { item->setText(action->text()); item->setIsSeparator(action->isSeparator()); -// item->setIcon(action->icon()); + if (action->isIconVisibleInMenu()) + item->setIcon(action->icon()); item->setVisible(action->isVisible()); item->setShortcut(action->shortcut()); item->setChecked(action->isChecked());