summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Ehrlicher <[email protected]>2024-12-24 21:34:37 +0100
committerChristian Ehrlicher <[email protected]>2024-12-29 00:52:00 +0100
commitefc318e05a2288f3fe62d9d7b2b892906e9263e0 (patch)
tree31c5d79e6facf2c66fa766624b1d47946cb6051f
parentd4c518b210ad56cb51c17e6e1b4a81b0deb7253c (diff)
Widgets: pass dpr to QIcon::pixmap()
Change the remaining calls to QIcon::pixmap() to pass a valid devicePixelRatio parameter. Pick-to: 6.9 Change-Id: I0e71e20c8109e296446e9e13cddba31d53c05df9 Reviewed-by: Volker Hilsheimer <[email protected]>
-rw-r--r--src/widgets/dialogs/qmessagebox.cpp3
-rw-r--r--src/widgets/doc/snippets/code/doc_src_styles.cpp4
-rw-r--r--src/widgets/itemviews/qitemdelegate.cpp4
-rw-r--r--src/widgets/styles/qfusionstyle.cpp3
-rw-r--r--src/widgets/styles/qwindowsstyle.cpp9
-rw-r--r--src/widgets/util/qsystemtrayicon.cpp2
6 files changed, 14 insertions, 11 deletions
diff --git a/src/widgets/dialogs/qmessagebox.cpp b/src/widgets/dialogs/qmessagebox.cpp
index 2a950228cd2..b2a7ad274b2 100644
--- a/src/widgets/dialogs/qmessagebox.cpp
+++ b/src/widgets/dialogs/qmessagebox.cpp
@@ -1924,8 +1924,7 @@ void QMessageBox::about(QWidget *parent, const QString &title, const QString &te
);
msgBox->setAttribute(Qt::WA_DeleteOnClose);
QIcon icon = msgBox->windowIcon();
- QSize size = icon.actualSize(QSize(64, 64));
- msgBox->setIconPixmap(icon.pixmap(size));
+ msgBox->setIconPixmap(icon.pixmap(QSize(64, 64), msgBox->devicePixelRatio()));
// should perhaps be a style hint
#ifdef Q_OS_MAC
diff --git a/src/widgets/doc/snippets/code/doc_src_styles.cpp b/src/widgets/doc/snippets/code/doc_src_styles.cpp
index 72382217a2b..ba91ac2b9ff 100644
--- a/src/widgets/doc/snippets/code/doc_src_styles.cpp
+++ b/src/widgets/doc/snippets/code/doc_src_styles.cpp
@@ -78,7 +78,9 @@
QPixmap pix;
QRect textRect = btn->rect;
if (!btn->icon.isNull()) {
- pix = btn->icon.pixmap(btn->iconSize, btn->state & State_Enabled ? QIcon::Normal : QIcon::Disabled);
+ const auto dpr = p->device()->devicePixelRatio();
+ pix = btn->icon.pixmap(btn->iconSize, dpr,
+ btn->state & State_Enabled ? QIcon::Normal : QIcon::Disabled);
drawItemPixmap(p, btn->rect, alignment, pix);
if (btn->direction == Qt::RightToLeft)
textRect.setRight(textRect.right() - btn->iconSize.width() - 4);
diff --git a/src/widgets/itemviews/qitemdelegate.cpp b/src/widgets/itemviews/qitemdelegate.cpp
index b50287a4ad6..be17dcc8c74 100644
--- a/src/widgets/itemviews/qitemdelegate.cpp
+++ b/src/widgets/itemviews/qitemdelegate.cpp
@@ -23,6 +23,7 @@
#include <qtextlayout.h>
#include <private/qabstractitemdelegate_p.h>
#include <private/qabstractitemmodel_p.h>
+#include <private/qstylehelper_p.h>
#include <private/qtextengine_p.h>
#include <qdebug.h>
#include <qlocale.h>
@@ -934,7 +935,8 @@ QPixmap QItemDelegate::decoration(const QStyleOptionViewItem &option, const QVar
case QMetaType::QIcon: {
QIcon::Mode mode = d->iconMode(option.state);
QIcon::State state = d->iconState(option.state);
- return qvariant_cast<QIcon>(variant).pixmap(option.decorationSize, mode, state); }
+ const auto dpr = QStyleHelper::getDpr(option.widget);
+ return qvariant_cast<QIcon>(variant).pixmap(option.decorationSize, dpr, mode, state); }
case QMetaType::QColor: {
static QPixmap pixmap(option.decorationSize);
pixmap.fill(qvariant_cast<QColor>(variant));
diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp
index 558e4d98c57..45ca248b479 100644
--- a/src/widgets/styles/qfusionstyle.cpp
+++ b/src/widgets/styles/qfusionstyle.cpp
@@ -2182,7 +2182,8 @@ void QFusionStyle::drawComplexControl(ComplexControl control, const QStyleOption
titleBar->icon.paint(painter, iconRect);
} else {
QStyleOption tool = *titleBar;
- QPixmap pm = proxy()->standardIcon(SP_TitleBarMenuButton, &tool, widget).pixmap(16, 16);
+ QPixmap pm = proxy()->standardIcon(SP_TitleBarMenuButton, &tool, widget)
+ .pixmap(QSize(16, 16), QStyleHelper::getDpr(painter));
tool.rect = iconRect;
painter->save();
proxy()->drawItemPixmap(painter, iconRect, Qt::AlignCenter, pm);
diff --git a/src/widgets/styles/qwindowsstyle.cpp b/src/widgets/styles/qwindowsstyle.cpp
index ca1ab05e4a7..4adfd4b08c5 100644
--- a/src/widgets/styles/qwindowsstyle.cpp
+++ b/src/widgets/styles/qwindowsstyle.cpp
@@ -1055,11 +1055,10 @@ void QWindowsStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPai
QIcon::Mode mode = dis ? QIcon::Disabled : QIcon::Normal;
if (act && !dis)
mode = QIcon::Active;
- QPixmap pixmap;
- if (checked)
- pixmap = menuitem->icon.pixmap(proxy()->pixelMetric(PM_SmallIconSize, opt, widget), mode, QIcon::On);
- else
- pixmap = menuitem->icon.pixmap(proxy()->pixelMetric(PM_SmallIconSize, opt, widget), mode);
+ const auto size = proxy()->pixelMetric(PM_SmallIconSize, opt, widget);
+ const auto dpr = QStyleHelper::getDpr(p);
+ const auto state = checked ? QIcon::On : QIcon::Off;
+ const auto pixmap = menuitem->icon.pixmap(QSize(size, size), dpr, mode, state);
QRect pmr(QPoint(0, 0), pixmap.deviceIndependentSize().toSize());
pmr.moveCenter(vCheckRect.center());
p->setPen(menuitem->palette.text().color());
diff --git a/src/widgets/util/qsystemtrayicon.cpp b/src/widgets/util/qsystemtrayicon.cpp
index a21f84bb7cb..cd098eaffe0 100644
--- a/src/widgets/util/qsystemtrayicon.cpp
+++ b/src/widgets/util/qsystemtrayicon.cpp
@@ -520,7 +520,7 @@ QBalloonTip::QBalloonTip(const QIcon &icon, const QString &title,
#if QT_CONFIG(label)
if (!icon.isNull()) {
QLabel *iconLabel = new QLabel;
- iconLabel->setPixmap(icon.pixmap(iconSize, iconSize));
+ iconLabel->setPixmap(icon.pixmap(QSize(iconSize, iconSize), devicePixelRatio()));
iconLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
iconLabel->setMargin(2);
layout->addWidget(iconLabel, 0, 0);