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 <volker.hilsheimer@qt.io>
This commit is contained in:
parent
7951eba61e
commit
a3b24c2842
@ -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)
|
||||
|
@ -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());
|
||||
|
Loading…
x
Reference in New Issue
Block a user