From a8d72fe9de8febb381c061de4849b6d03662b2ce Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher Date: Fri, 18 Apr 2025 22:50:14 +0200 Subject: [PATCH] Windows11/VistaStyle: Simplify painting icon for CE_MenuItem Use QIcon::paint() instead retrieving a QPixmap from the icon and paint it 'manually'. Change-Id: I4e8e47bf8d7fdffa8e65f93e3b8501074d831c43 Reviewed-by: Volker Hilsheimer (cherry picked from commit a3b24c2842cf48bf0d82d8d52ce2dc0edd441fc4) Reviewed-by: Qt Cherry-pick Bot --- src/plugins/styles/modernwindows/qwindows11style.cpp | 9 ++++----- src/plugins/styles/modernwindows/qwindowsvistastyle.cpp | 9 +++------ 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/plugins/styles/modernwindows/qwindows11style.cpp b/src/plugins/styles/modernwindows/qwindows11style.cpp index 039c52a9c98..d4e00d6b568 100644 --- a/src/plugins/styles/modernwindows/qwindows11style.cpp +++ b/src/plugins/styles/modernwindows/qwindows11style.cpp @@ -1580,12 +1580,11 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op QIcon::Mode mode = dis ? QIcon::Disabled : QIcon::Normal; if (act && !dis) mode = QIcon::Active; - QPixmap pixmap = menuitem->icon.pixmap(proxy()->pixelMetric(PM_SmallIconSize, option, widget), - mode, checked ? QIcon::On : QIcon::Off); - QRect pmr(QPoint(0, 0), pixmap.deviceIndependentSize().toSize()); + const auto size = proxy()->pixelMetric(PM_SmallIconSize, option, widget); + QRect pmr(QPoint(0, 0), QSize(size, size)); pmr.moveCenter(vCheckRect.center()); - painter->setPen(menuitem->palette.text().color()); - painter->drawPixmap(pmr.topLeft(), pixmap); + menuitem->icon.paint(painter, pmr, Qt::AlignCenter, mode, + checked ? QIcon::On : QIcon::Off); } else if (checked) { painter->save(); if (dis) diff --git a/src/plugins/styles/modernwindows/qwindowsvistastyle.cpp b/src/plugins/styles/modernwindows/qwindowsvistastyle.cpp index 6a003c2e7b2..4a951da427a 100644 --- a/src/plugins/styles/modernwindows/qwindowsvistastyle.cpp +++ b/src/plugins/styles/modernwindows/qwindowsvistastyle.cpp @@ -2935,13 +2935,10 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption if (act && !dis) mode = QIcon::Active; const auto size = proxy()->pixelMetric(PM_SmallIconSize, option, widget); - const auto dpr = painter->device()->devicePixelRatio(); - const auto pixmap = menuitem->icon.pixmap({size, size}, dpr, mode, - checked ? QIcon::On : QIcon::Off); - QRect pmr(QPoint(0, 0), pixmap.deviceIndependentSize().toSize()); + QRect pmr(QPoint(0, 0), QSize(size, size)); pmr.moveCenter(vCheckRect.center()); - painter->setPen(menuitem->palette.text().color()); - painter->drawPixmap(pmr.topLeft(), pixmap); + menuitem->icon.paint(painter, vCheckRect, Qt::AlignCenter, mode, + checked ? QIcon::On : QIcon::Off); } painter->setPen(menuitem->palette.buttonText().color());