diff --git a/src/core/mac_startup.mm b/src/core/mac_startup.mm index d9836377f..4a89677e7 100644 --- a/src/core/mac_startup.mm +++ b/src/core/mac_startup.mm @@ -451,4 +451,12 @@ void EnableFullScreen(const QWidget& main_window) { [window setCollectionBehavior: kFullScreenPrimary]; } +float GetDevicePixelRatio(QWidget* widget) { + NSView* view = reinterpret_cast(widget->winId()); + if ([[view window] respondsToSelector: @selector(backingScaleFactor)]) { + return [[view window] backingScaleFactor]; + } + return 1.0f; +} + } // namespace mac diff --git a/src/core/mac_utilities.h b/src/core/mac_utilities.h index 9ad84e1fb..fadaab0fd 100644 --- a/src/core/mac_utilities.h +++ b/src/core/mac_utilities.h @@ -29,5 +29,6 @@ namespace mac { QKeySequence KeySequenceFromNSEvent(NSEvent* event); void DumpDictionary(CFDictionaryRef dict); +float GetDevicePixelRatio(QWidget* widget); } diff --git a/src/playlist/playlistdelegates.cpp b/src/playlist/playlistdelegates.cpp index 752b556eb..b49b46ee3 100644 --- a/src/playlist/playlistdelegates.cpp +++ b/src/playlist/playlistdelegates.cpp @@ -16,13 +16,6 @@ */ #include "playlistdelegates.h" -#include "queue.h" -#include "core/logging.h" -#include "core/player.h" -#include "core/utilities.h" -#include "library/librarybackend.h" -#include "widgets/trackslider.h" -#include "ui/iconloader.h" #include #include @@ -39,6 +32,18 @@ #include #include +#include "queue.h" +#include "core/logging.h" +#include "core/player.h" +#include "core/utilities.h" +#include "library/librarybackend.h" +#include "widgets/trackslider.h" +#include "ui/iconloader.h" + +#ifdef Q_OS_DARWIN +#include "core/mac_utilities.h" +#endif // Q_OS_DARWIN + const int QueuedItemDelegate::kQueueBoxBorder = 1; const int QueuedItemDelegate::kQueueBoxCornerRadius = 3; const int QueuedItemDelegate::kQueueBoxLength = 30; @@ -492,8 +497,14 @@ void SongSourceDelegate::paint( const QUrl& url = index.data().toUrl(); QPixmap pixmap = LookupPixmap(url, option_copy.decorationSize); + float device_pixel_ratio = 1.0f; +#ifdef Q_OS_DARWIN + QWidget* parent_widget = reinterpret_cast(parent()); + device_pixel_ratio = mac::GetDevicePixelRatio(parent_widget); +#endif + // Draw the pixmap in the middle of the rectangle - QRect draw_rect(QPoint(0, 0), option_copy.decorationSize); + QRect draw_rect(QPoint(0, 0), option_copy.decorationSize / device_pixel_ratio); draw_rect.moveCenter(option_copy.rect.center()); painter->drawPixmap(draw_rect, pixmap);