summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@qt.io>2016-11-22 09:46:14 +0100
committerAndy Shaw <andy.shaw@qt.io>2016-11-23 06:58:05 +0000
commitd8857f21ac2640215177b9cb7bb681b74bc66068 (patch)
treea1dd99dd78c6be1db6acf3a1ec5a1ece03047ceb /src/plugins/platforms/cocoa
parente2b856d56290e9b3eaaf889b3e0a08badbaa6046 (diff)
If there are no available sizes, then fallback to the requested size
In a case like the SVG iconengine there is no available sizes implementation. However in that case we don't need to provide different sizes as we can have SVG scale it for us to the one requested. So it is assumed that with no available sizes implementation that the icon engine will take care of this for us. This ensures that SVG files can be used as icons inside the menu on macOS. Task-number: QTBUG-40225 Task-number: QTBUG-55932 Change-Id: If01ca582c4c07834e6de16652924e0b7e118c87c Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Diffstat (limited to 'src/plugins/platforms/cocoa')
-rw-r--r--src/plugins/platforms/cocoa/qcocoahelpers.h2
-rw-r--r--src/plugins/platforms/cocoa/qcocoahelpers.mm7
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenuitem.mm2
3 files changed, 7 insertions, 4 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.h b/src/plugins/platforms/cocoa/qcocoahelpers.h
index c2abe4e245..bbb37937d2 100644
--- a/src/plugins/platforms/cocoa/qcocoahelpers.h
+++ b/src/plugins/platforms/cocoa/qcocoahelpers.h
@@ -64,7 +64,7 @@ inline NSMutableArray *qt_mac_QStringListToNSMutableArray(const QStringList &qst
NSImage *qt_mac_cgimage_to_nsimage(CGImageRef iamge);
NSImage *qt_mac_create_nsimage(const QPixmap &pm);
-NSImage *qt_mac_create_nsimage(const QIcon &icon);
+NSImage *qt_mac_create_nsimage(const QIcon &icon, int defaultSize = 0);
CGImageRef qt_mac_toCGImage(const QImage &qImage);
CGImageRef qt_mac_toCGImageMask(const QImage &qImage);
QImage qt_mac_toQImage(CGImageRef image);
diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.mm b/src/plugins/platforms/cocoa/qcocoahelpers.mm
index 058209da7e..cd73148752 100644
--- a/src/plugins/platforms/cocoa/qcocoahelpers.mm
+++ b/src/plugins/platforms/cocoa/qcocoahelpers.mm
@@ -152,13 +152,16 @@ NSImage *qt_mac_create_nsimage(const QPixmap &pm)
return nsImage;
}
-NSImage *qt_mac_create_nsimage(const QIcon &icon)
+NSImage *qt_mac_create_nsimage(const QIcon &icon, int defaultSize)
{
if (icon.isNull())
return nil;
NSImage *nsImage = [[NSImage alloc] init];
- foreach (QSize size, icon.availableSizes()) {
+ QList<QSize> availableSizes = icon.availableSizes();
+ if (availableSizes.isEmpty() && defaultSize > 0)
+ availableSizes << QSize(defaultSize, defaultSize);
+ foreach (QSize size, availableSizes) {
QPixmap pm = icon.pixmap(size);
QImage image = pm.toImage();
CGImageRef cgImage = qt_mac_toCGImage(image);
diff --git a/src/plugins/platforms/cocoa/qcocoamenuitem.mm b/src/plugins/platforms/cocoa/qcocoamenuitem.mm
index 2d4073956a..fa8eb22569 100644
--- a/src/plugins/platforms/cocoa/qcocoamenuitem.mm
+++ b/src/plugins/platforms/cocoa/qcocoamenuitem.mm
@@ -348,7 +348,7 @@ NSMenuItem *QCocoaMenuItem::sync()
NSImage *img = nil;
if (!m_icon.isNull()) {
- img = qt_mac_create_nsimage(m_icon);
+ img = qt_mac_create_nsimage(m_icon, m_iconSize);
[img setSize:NSMakeSize(m_iconSize, m_iconSize)];
}
[m_native setImage:img];