diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/image/qicon.cpp | 28 | ||||
-rw-r--r-- | src/gui/image/qicon.h | 3 | ||||
-rw-r--r-- | src/gui/image/qicon_p.h | 1 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm | 1 |
4 files changed, 32 insertions, 1 deletions
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index 60b5b6abd0..40b33b5359 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -129,7 +129,8 @@ static qreal qt_effective_device_pixel_ratio(QWindow *window = 0) QIconPrivate::QIconPrivate() : engine(0), ref(1), serialNum(serialNumCounter.fetchAndAddRelaxed(1)), - detach_no(0) + detach_no(0), + is_mask(false) { } @@ -1196,6 +1197,31 @@ bool QIcon::hasThemeIcon(const QString &name) return icon.name() == name; } +/*! + \since 5.6 + + Indicate that this icon is a mask image, and hence can potentially + be modified based on where it's displayed. + \sa isMask() +*/ +void QIcon::setIsMask(bool isMask) +{ + d->is_mask = isMask; +} + +/*! + \since 5.6 + + Returns \c true if this icon has been marked as a mask image. + Certain platforms render mask icons differently (for example, + menu icons on OS X). + + \sa setIsMask() +*/ +bool QIcon::isMask() const +{ + return d->is_mask; +} /***************************************************************************** QIcon stream functions diff --git a/src/gui/image/qicon.h b/src/gui/image/qicon.h index c33a1f2698..ccddf69101 100644 --- a/src/gui/image/qicon.h +++ b/src/gui/image/qicon.h @@ -102,6 +102,9 @@ public: QList<QSize> availableSizes(Mode mode = Normal, State state = Off) const; + void setIsMask(bool isMask); + bool isMask() const; + static QIcon fromTheme(const QString &name, const QIcon &fallback = QIcon()); static bool hasThemeIcon(const QString &name); diff --git a/src/gui/image/qicon_p.h b/src/gui/image/qicon_p.h index 8b42e770fa..2a4f584a0d 100644 --- a/src/gui/image/qicon_p.h +++ b/src/gui/image/qicon_p.h @@ -71,6 +71,7 @@ public: QAtomicInt ref; int serialNum; int detach_no; + bool is_mask; }; diff --git a/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm b/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm index 713758cc7e..a3ffb5be66 100644 --- a/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm +++ b/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm @@ -252,6 +252,7 @@ void QCocoaSystemTrayIcon::updateIcon(const QIcon &icon) } NSImage *nsimage = static_cast<NSImage *>(qt_mac_create_nsimage(fullHeightPixmap)); + [nsimage setTemplate:icon.isMask()]; [(NSImageView*)[[m_sys->item item] view] setImage: nsimage]; [nsimage release]; } |