From a3b24c2842cf48bf0d82d8d52ce2dc0edd441fc4 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'. Pick-to: 6.9 Change-Id: I4e8e47bf8d7fdffa8e65f93e3b8501074d831c43 Reviewed-by: Volker Hilsheimer --- 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 79044f1cdb5..fd169745483 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 9332edef26d..c2154a1c567 100644 --- a/src/plugins/styles/modernwindows/qwindowsvistastyle.cpp +++ b/src/plugins/styles/modernwindows/qwindowsvistastyle.cpp @@ -2939,13 +2939,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());