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 <volker.hilsheimer@qt.io> (cherry picked from commit a3b24c2842cf48bf0d82d8d52ce2dc0edd441fc4) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
f71e7ce350
commit
a8d72fe9de
@ -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)
|
||||
|
@ -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());
|
||||
|
Loading…
x
Reference in New Issue
Block a user