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;
|
QIcon::Mode mode = dis ? QIcon::Disabled : QIcon::Normal;
|
||||||
if (act && !dis)
|
if (act && !dis)
|
||||||
mode = QIcon::Active;
|
mode = QIcon::Active;
|
||||||
QPixmap pixmap = menuitem->icon.pixmap(proxy()->pixelMetric(PM_SmallIconSize, option, widget),
|
const auto size = proxy()->pixelMetric(PM_SmallIconSize, option, widget);
|
||||||
mode, checked ? QIcon::On : QIcon::Off);
|
QRect pmr(QPoint(0, 0), QSize(size, size));
|
||||||
QRect pmr(QPoint(0, 0), pixmap.deviceIndependentSize().toSize());
|
|
||||||
pmr.moveCenter(vCheckRect.center());
|
pmr.moveCenter(vCheckRect.center());
|
||||||
painter->setPen(menuitem->palette.text().color());
|
menuitem->icon.paint(painter, pmr, Qt::AlignCenter, mode,
|
||||||
painter->drawPixmap(pmr.topLeft(), pixmap);
|
checked ? QIcon::On : QIcon::Off);
|
||||||
} else if (checked) {
|
} else if (checked) {
|
||||||
painter->save();
|
painter->save();
|
||||||
if (dis)
|
if (dis)
|
||||||
|
@ -2939,13 +2939,10 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption
|
|||||||
if (act && !dis)
|
if (act && !dis)
|
||||||
mode = QIcon::Active;
|
mode = QIcon::Active;
|
||||||
const auto size = proxy()->pixelMetric(PM_SmallIconSize, option, widget);
|
const auto size = proxy()->pixelMetric(PM_SmallIconSize, option, widget);
|
||||||
const auto dpr = painter->device()->devicePixelRatio();
|
QRect pmr(QPoint(0, 0), QSize(size, size));
|
||||||
const auto pixmap = menuitem->icon.pixmap({size, size}, dpr, mode,
|
|
||||||
checked ? QIcon::On : QIcon::Off);
|
|
||||||
QRect pmr(QPoint(0, 0), pixmap.deviceIndependentSize().toSize());
|
|
||||||
pmr.moveCenter(vCheckRect.center());
|
pmr.moveCenter(vCheckRect.center());
|
||||||
painter->setPen(menuitem->palette.text().color());
|
menuitem->icon.paint(painter, vCheckRect, Qt::AlignCenter, mode,
|
||||||
painter->drawPixmap(pmr.topLeft(), pixmap);
|
checked ? QIcon::On : QIcon::Off);
|
||||||
}
|
}
|
||||||
|
|
||||||
painter->setPen(menuitem->palette.buttonText().color());
|
painter->setPen(menuitem->palette.buttonText().color());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user