macOS: Propagate device-pixel-ratio of system tray icon

When preparing a system tray icon on a system with a retina screen,
we end up creating a full-height icon of height 44. If there's also
a 1x screen available, macOS will scale down this image for us when
presenting the icon on the 1 screen, but the downscale will fail to
preserve the aspect ratio of the original image on Big Sur.

Telling macOS which device-pixel-ratio the image has seems to fix
this, and is the right thing to do in any case.

Fixes: QTBUG-88600
Change-Id: Ic31def94d073da1b256bbfcaf5905f92c169f43d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit a6aaa2b7071b7666a807b450dc5738742f3cc9e0)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Tor Arne Vestbø 2020-11-18 14:46:42 +01:00 committed by Qt Cherry-pick Bot
parent a778580339
commit eaad8fe730

View File

@ -226,6 +226,7 @@ void QCocoaSystemTrayIcon::updateIcon(const QIcon &icon)
r.moveCenter(fullHeightPixmap.rect().center());
p.drawPixmap(r, pixmap);
}
fullHeightPixmap.setDevicePixelRatio(devicePixelRatio);
NSImage *nsimage = static_cast<NSImage *>(qt_mac_create_nsimage(fullHeightPixmap));
[nsimage setTemplate:icon.isMask()];