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>bb10
parent
e2b856d562
commit
d8857f21ac
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
Loading…
Reference in New Issue