forked from qt-creator/qt-creator
StyleHelper: fix floating-point DPR icon pixelated
set the DPR as a floating point number for the pixmap. Change-Id: I354e27556dbd8a0d53cfc3e0c2b708f06406aaf5 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -545,7 +545,7 @@ void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect,
|
|||||||
QPainter *p, QIcon::Mode iconMode, int dipRadius, const QColor &color, const QPoint &dipOffset)
|
QPainter *p, QIcon::Mode iconMode, int dipRadius, const QColor &color, const QPoint &dipOffset)
|
||||||
{
|
{
|
||||||
QPixmap cache;
|
QPixmap cache;
|
||||||
const int devicePixelRatio = p->device()->devicePixelRatio();
|
const qreal devicePixelRatio = p->device()->devicePixelRatioF();
|
||||||
QString pixmapName = QString::fromLatin1("icon %0 %1 %2 %3")
|
QString pixmapName = QString::fromLatin1("icon %0 %1 %2 %3")
|
||||||
.arg(icon.cacheKey()).arg(iconMode).arg(rect.height()).arg(devicePixelRatio);
|
.arg(icon.cacheKey()).arg(iconMode).arg(rect.height()).arg(devicePixelRatio);
|
||||||
|
|
||||||
@@ -557,7 +557,7 @@ void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect,
|
|||||||
// pixels.
|
// pixels.
|
||||||
QWindow *window = dynamic_cast<QWidget*>(p->device())->window()->windowHandle();
|
QWindow *window = dynamic_cast<QWidget*>(p->device())->window()->windowHandle();
|
||||||
QPixmap px = icon.pixmap(window, rect.size(), iconMode);
|
QPixmap px = icon.pixmap(window, rect.size(), iconMode);
|
||||||
int radius = dipRadius * devicePixelRatio;
|
int radius = int(dipRadius * devicePixelRatio);
|
||||||
QPoint offset = dipOffset * devicePixelRatio;
|
QPoint offset = dipOffset * devicePixelRatio;
|
||||||
cache = QPixmap(px.size() + QSize(radius * 2, radius * 2));
|
cache = QPixmap(px.size() + QSize(radius * 2, radius * 2));
|
||||||
cache.fill(Qt::transparent);
|
cache.fill(Qt::transparent);
|
||||||
|
Reference in New Issue
Block a user