Windows11/VistaStyle: pass dpr to QIcon::pixmap()
Pass the correct devicePixelRatio to QIcon::pixmap() to make sure the best pixmap is used for the current dpr. Pick-to: 6.9 Change-Id: I70014b649457cee819228fa0ead7beb7de944471 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
This commit is contained in:
parent
ecd63d469f
commit
e34db561cf
@ -665,11 +665,11 @@ void QWindows11Style::drawComplexControl(ComplexControl control, const QStyleOpt
|
||||
titlebar->icon.paint(painter, iconRect);
|
||||
} else {
|
||||
QStyleOption tool = *titlebar;
|
||||
QPixmap pm = proxy()->standardIcon(SP_TitleBarMenuButton, &tool, widget).pixmap(16, 16);
|
||||
tool.rect = iconRect;
|
||||
painter->save();
|
||||
const auto extent = proxy()->pixelMetric(PM_SmallIconSize, &tool, widget);
|
||||
const auto dpr = QStyleHelper::getDpr(widget);
|
||||
const auto icon = proxy()->standardIcon(SP_TitleBarMenuButton, &tool, widget);
|
||||
const auto pm = icon.pixmap(QSize(extent, extent), dpr);
|
||||
proxy()->drawItemPixmap(painter, iconRect, Qt::AlignCenter, pm);
|
||||
painter->restore();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2790,7 +2790,9 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption
|
||||
break;
|
||||
|
||||
QPalette::ColorRole textRole = disabled ? QPalette::Text : QPalette::ButtonText;
|
||||
QPixmap pix = mbi->icon.pixmap(proxy()->pixelMetric(PM_SmallIconSize, option, widget), QIcon::Normal);
|
||||
const auto dpr = QStyleHelper::getDpr(widget);
|
||||
const auto extent = proxy()->pixelMetric(PM_SmallIconSize, option, widget);
|
||||
const auto pix = mbi->icon.pixmap(QSize(extent, extent), dpr, QIcon::Normal);
|
||||
|
||||
int alignment = Qt::AlignCenter | Qt::TextShowMnemonic | Qt::TextDontClip | Qt::TextSingleLine;
|
||||
if (!proxy()->styleHint(SH_UnderlineShortcut, mbi, widget))
|
||||
@ -3088,7 +3090,6 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption
|
||||
else
|
||||
stateId = CS_INACTIVE;
|
||||
|
||||
int titleHeight = rect.height() - 2;
|
||||
rect = rect.adjusted(-fw, -fw, fw, 0);
|
||||
|
||||
QWindowsThemeData theme(widget, painter, themeNumber, 0, stateId);
|
||||
@ -3105,7 +3106,9 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption
|
||||
QIcon ico = widget->windowIcon();
|
||||
bool hasIcon = (ico.cacheKey() != QApplication::windowIcon().cacheKey());
|
||||
if (hasIcon) {
|
||||
QPixmap pxIco = ico.pixmap(titleHeight);
|
||||
const auto titleHeight = rect.height() - 2;
|
||||
const auto dpr = QStyleHelper::getDpr(widget);
|
||||
const auto pxIco = ico.pixmap(QSize(titleHeight, titleHeight), dpr);
|
||||
if (!verticalTitleBar && dwOpt->direction == Qt::RightToLeft)
|
||||
painter->drawPixmap(rect.width() - titleHeight - pxIco.width(), rect.bottom() - titleHeight - 2, pxIco);
|
||||
else
|
||||
@ -3685,11 +3688,11 @@ void QWindowsVistaStyle::drawComplexControl(ComplexControl control, const QStyle
|
||||
theme.partId = partId;
|
||||
theme.stateId = stateId;
|
||||
if (theme.size().isEmpty()) {
|
||||
int iconSize = proxy()->pixelMetric(PM_SmallIconSize, tb, widget);
|
||||
QPixmap pm = proxy()->standardIcon(SP_TitleBarMenuButton, tb, widget).pixmap(iconSize, iconSize);
|
||||
painter->save();
|
||||
const auto extent = proxy()->pixelMetric(PM_SmallIconSize, tb, widget);
|
||||
const auto dpr = QStyleHelper::getDpr(widget);
|
||||
const auto icon = proxy()->standardIcon(SP_TitleBarMenuButton, tb, widget);
|
||||
const auto pm = icon.pixmap(QSize(extent, extent), dpr);
|
||||
drawItemPixmap(painter, theme.rect, Qt::AlignCenter, pm);
|
||||
painter->restore();
|
||||
} else {
|
||||
d->drawBackground(theme);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user