Port QtBase to the new QIcon::pixmap() API
The target devicePixelRatio can now be passed to the pixmap() function, instead of a QWindow pointer. This allows us to remove some usage of the QWidget pointer in the styles, since the DPR is accessible from the passed in painter. The QWidget pointer is still used in places where we don't have a painter. Task-number: QTBUG-85885 Change-Id: Ifecc669f5bad655e289a936d71bafe02605f21a4 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
parent
1719be99a7
commit
5911335756
@ -80,11 +80,6 @@
|
||||
|
||||
QT_USE_NAMESPACE
|
||||
|
||||
static QWindow *qt_getWindow(const QWidget *widget)
|
||||
{
|
||||
return widget ? widget->window()->windowHandle() : 0;
|
||||
}
|
||||
|
||||
@interface QT_MANGLE_NAMESPACE(QIndeterminateProgressIndicator) : NSProgressIndicator
|
||||
|
||||
@property (readonly, nonatomic) NSInteger animators;
|
||||
@ -2956,7 +2951,8 @@ QPixmap QMacStyle::standardPixmap(StandardPixmap standardPixmap, const QStyleOpt
|
||||
size = 64;
|
||||
break;
|
||||
}
|
||||
return icon.pixmap(qt_getWindow(widget), QSize(size, size));
|
||||
qreal dpr = widget ? widget->devicePixelRatio() : qApp->devicePixelRatio();
|
||||
return icon.pixmap(QSize(size, size), dpr);
|
||||
}
|
||||
|
||||
void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p,
|
||||
@ -3547,7 +3543,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
|
||||
if (opt->state & State_Enabled)
|
||||
mode = QIcon::Normal;
|
||||
int iconExtent = proxy()->pixelMetric(PM_SmallIconSize);
|
||||
QPixmap pixmap = header->icon.pixmap(window, QSize(iconExtent, iconExtent), mode);
|
||||
QPixmap pixmap = header->icon.pixmap(QSize(iconExtent, iconExtent), p->device()->devicePixelRatio(), mode);
|
||||
|
||||
QRect pixr = header->rect;
|
||||
pixr.setY(header->rect.center().y() - (pixmap.height() / pixmap.devicePixelRatio() - 1) / 2);
|
||||
@ -3598,8 +3594,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
|
||||
: QIcon::Disabled;
|
||||
QIcon::State iconState = (tb->state & State_On) ? QIcon::On
|
||||
: QIcon::Off;
|
||||
QPixmap pixmap = tb->icon.pixmap(window,
|
||||
tb->rect.size().boundedTo(tb->iconSize),
|
||||
QPixmap pixmap = tb->icon.pixmap(tb->rect.size().boundedTo(tb->iconSize), p->device()->devicePixelRatio(),
|
||||
iconMode, iconState);
|
||||
|
||||
// Draw the text if it's needed.
|
||||
@ -3797,7 +3792,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
|
||||
QIcon::State state = QIcon::Off;
|
||||
if (btn.state & State_On)
|
||||
state = QIcon::On;
|
||||
QPixmap pixmap = btn.icon.pixmap(window, btn.iconSize, mode, state);
|
||||
QPixmap pixmap = btn.icon.pixmap(btn.iconSize, p->device()->devicePixelRatio(), mode, state);
|
||||
int pixmapWidth = pixmap.width() / pixmap.devicePixelRatio();
|
||||
int pixmapHeight = pixmap.height() / pixmap.devicePixelRatio();
|
||||
contentW += pixmapWidth + QMacStylePrivate::PushButtonContentPadding;
|
||||
@ -4261,7 +4256,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
|
||||
iconSize = comboBox->iconSize();
|
||||
}
|
||||
#endif
|
||||
QPixmap pixmap = mi->icon.pixmap(window, iconSize, mode);
|
||||
QPixmap pixmap = mi->icon.pixmap(iconSize, p->device()->devicePixelRatio(), mode);
|
||||
int pixw = pixmap.width() / pixmap.devicePixelRatio();
|
||||
int pixh = pixmap.height() / pixmap.devicePixelRatio();
|
||||
QRect cr(xpos, mi->rect.y(), checkcol, mi->rect.height());
|
||||
@ -4369,7 +4364,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
|
||||
drawItemPixmap(p, mi->rect,
|
||||
Qt::AlignCenter | Qt::TextHideMnemonic | Qt::TextDontClip
|
||||
| Qt::TextSingleLine,
|
||||
mi->icon.pixmap(window, QSize(iconExtent, iconExtent),
|
||||
mi->icon.pixmap(QSize(iconExtent, iconExtent), p->device()->devicePixelRatio(),
|
||||
(mi->state & State_Enabled) ? QIcon::Normal : QIcon::Disabled));
|
||||
} else {
|
||||
drawItemText(p, mi->rect,
|
||||
@ -5624,7 +5619,7 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex
|
||||
const auto iconPos = tr.x() - titlebar->icon.actualSize(iconSize).width() - qRound(titleBarIconTitleSpacing);
|
||||
// Only render the icon if it'll be fully visible
|
||||
if (iconPos < tr.right() - titleBarIconTitleSpacing)
|
||||
p->drawPixmap(iconPos, tr.y(), titlebar->icon.pixmap(window, iconSize, QIcon::Normal));
|
||||
p->drawPixmap(iconPos, tr.y(), titlebar->icon.pixmap(iconSize, QIcon::Normal));
|
||||
}
|
||||
|
||||
if (!titlebar->text.isEmpty())
|
||||
|
@ -2662,10 +2662,8 @@ QPixmap QMessageBoxPrivate::standardIcon(QMessageBox::Icon icon, QMessageBox *mb
|
||||
break;
|
||||
}
|
||||
if (!tmpIcon.isNull()) {
|
||||
QWindow *window = mb
|
||||
? qt_widget_private(mb)->windowHandle(QWidgetPrivate::WindowHandleMode::Closest)
|
||||
: nullptr;
|
||||
return tmpIcon.pixmap(window, QSize(iconSize, iconSize));
|
||||
qreal dpr = mb ? mb->devicePixelRatio() : qApp->devicePixelRatio();
|
||||
return tmpIcon.pixmap(QSize(iconSize, iconSize), dpr);
|
||||
}
|
||||
return QPixmap();
|
||||
}
|
||||
|
@ -121,9 +121,9 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
static QWindow *qt_getWindow(const QWidget *widget)
|
||||
static qreal qt_getDevicePixelRatio(const QWidget *widget)
|
||||
{
|
||||
return widget ? widget->window()->windowHandle() : nullptr;
|
||||
return widget ? widget->devicePixelRatio() : qApp->devicePixelRatio();
|
||||
}
|
||||
|
||||
/*!
|
||||
@ -441,7 +441,7 @@ void QCommonStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, Q
|
||||
mode = QIcon::Disabled;
|
||||
|
||||
QIcon::State state = opt->state & State_Sunken ? QIcon::On : QIcon::Off;
|
||||
QPixmap pixmap = d->tabBarcloseButtonIcon.pixmap(qt_getWindow(widget), QSize(size, size), mode, state);
|
||||
QPixmap pixmap = d->tabBarcloseButtonIcon.pixmap(QSize(size, size), p->device()->devicePixelRatio(), mode, state);
|
||||
proxy()->drawItemPixmap(p, opt->rect, Qt::AlignCenter, pixmap);
|
||||
break;
|
||||
}
|
||||
@ -1371,7 +1371,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
|
||||
if (button->state & State_On)
|
||||
state = QIcon::On;
|
||||
|
||||
QPixmap pixmap = button->icon.pixmap(qt_getWindow(widget), button->iconSize, mode, state);
|
||||
QPixmap pixmap = button->icon.pixmap(button->iconSize, p->device()->devicePixelRatio(), mode, state);
|
||||
int pixmapWidth = pixmap.width() / pixmap.devicePixelRatio();
|
||||
int pixmapHeight = pixmap.height() / pixmap.devicePixelRatio();
|
||||
int labelWidth = pixmapWidth;
|
||||
@ -1449,7 +1449,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
|
||||
QPixmap pix;
|
||||
QRect textRect = btn->rect;
|
||||
if (!btn->icon.isNull()) {
|
||||
pix = btn->icon.pixmap(qt_getWindow(widget), btn->iconSize, btn->state & State_Enabled ? QIcon::Normal : QIcon::Disabled);
|
||||
pix = btn->icon.pixmap(btn->iconSize, p->device()->devicePixelRatio(), btn->state & State_Enabled ? QIcon::Normal : QIcon::Disabled);
|
||||
proxy()->drawItemPixmap(p, btn->rect, alignment, pix);
|
||||
if (btn->direction == Qt::RightToLeft)
|
||||
textRect.setRight(textRect.right() - btn->iconSize.width() - 4);
|
||||
@ -1491,7 +1491,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
|
||||
if (!proxy()->styleHint(SH_UnderlineShortcut, mbi, widget))
|
||||
alignment |= Qt::TextHideMnemonic;
|
||||
int iconExtent = proxy()->pixelMetric(PM_SmallIconSize, opt);
|
||||
QPixmap pix = mbi->icon.pixmap(qt_getWindow(widget), QSize(iconExtent, iconExtent), (mbi->state & State_Enabled) ? QIcon::Normal : QIcon::Disabled);
|
||||
QPixmap pix = mbi->icon.pixmap(QSize(iconExtent, iconExtent), p->device()->devicePixelRatio(), (mbi->state & State_Enabled) ? QIcon::Normal : QIcon::Disabled);
|
||||
if (!pix.isNull())
|
||||
proxy()->drawItemPixmap(p,mbi->rect, alignment, pix);
|
||||
else
|
||||
@ -1648,7 +1648,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
|
||||
if (!header->icon.isNull()) {
|
||||
int iconExtent = proxy()->pixelMetric(PM_SmallIconSize, opt);
|
||||
QPixmap pixmap
|
||||
= header->icon.pixmap(qt_getWindow(widget), QSize(iconExtent, iconExtent), (header->state & State_Enabled) ? QIcon::Normal : QIcon::Disabled);
|
||||
= header->icon.pixmap(QSize(iconExtent, iconExtent), p->device()->devicePixelRatio(), (header->state & State_Enabled) ? QIcon::Normal : QIcon::Disabled);
|
||||
int pixw = pixmap.width() / pixmap.devicePixelRatio();
|
||||
|
||||
QRect aligned = alignedRect(header->direction, QFlag(header->iconAlignment), pixmap.size() / pixmap.devicePixelRatio(), rect);
|
||||
@ -1708,7 +1708,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
|
||||
mode = QIcon::Active;
|
||||
else
|
||||
mode = QIcon::Normal;
|
||||
pm = toolbutton->icon.pixmap(qt_getWindow(widget), toolbutton->rect.size().boundedTo(toolbutton->iconSize),
|
||||
pm = toolbutton->icon.pixmap(toolbutton->rect.size().boundedTo(toolbutton->iconSize), p->device()->devicePixelRatio(),
|
||||
mode, state);
|
||||
pmSize = pm.size() / pm.devicePixelRatio();
|
||||
}
|
||||
@ -1931,7 +1931,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
|
||||
bool enabled = tb->state & State_Enabled;
|
||||
bool selected = tb->state & State_Selected;
|
||||
int iconExtent = proxy()->pixelMetric(QStyle::PM_SmallIconSize, tb, widget);
|
||||
QPixmap pm = tb->icon.pixmap(qt_getWindow(widget), QSize(iconExtent, iconExtent),
|
||||
QPixmap pm = tb->icon.pixmap(QSize(iconExtent, iconExtent), p->device()->devicePixelRatio(),
|
||||
enabled ? QIcon::Normal : QIcon::Disabled);
|
||||
|
||||
QRect cr = subElementRect(QStyle::SE_ToolBoxTabContents, tb, widget);
|
||||
@ -2005,7 +2005,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
|
||||
tr = proxy()->subElementRect(SE_TabBarTabText, opt, widget); //we compute tr twice because the style may override subElementRect
|
||||
|
||||
if (!tab->icon.isNull()) {
|
||||
QPixmap tabIcon = tab->icon.pixmap(qt_getWindow(widget), tab->iconSize,
|
||||
QPixmap tabIcon = tab->icon.pixmap(tab->iconSize, p->device()->devicePixelRatio(),
|
||||
(tab->state & State_Enabled) ? QIcon::Normal
|
||||
: QIcon::Disabled,
|
||||
(tab->state & State_Selected) ? QIcon::On
|
||||
@ -2205,7 +2205,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
|
||||
if (!cb->currentIcon.isNull()) {
|
||||
QIcon::Mode mode = cb->state & State_Enabled ? QIcon::Normal
|
||||
: QIcon::Disabled;
|
||||
QPixmap pixmap = cb->currentIcon.pixmap(qt_getWindow(widget), cb->iconSize, mode);
|
||||
QPixmap pixmap = cb->currentIcon.pixmap(cb->iconSize, p->device()->devicePixelRatio(), mode);
|
||||
QRect iconRect(editRect);
|
||||
iconRect.setWidth(cb->iconSize.width() + 4);
|
||||
iconRect = alignedRect(cb->direction,
|
||||
@ -2513,7 +2513,7 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
|
||||
if (!btn->icon.isNull()) {
|
||||
iconRect = itemPixmapRect(cr, Qt::AlignAbsolute | Qt::AlignLeft | Qt::AlignVCenter
|
||||
| Qt::TextShowMnemonic,
|
||||
btn->icon.pixmap(qt_getWindow(widget), btn->iconSize, QIcon::Normal));
|
||||
btn->icon.pixmap(btn->iconSize, qt_getDevicePixelRatio(widget), QIcon::Normal));
|
||||
if (!textRect.isEmpty())
|
||||
textRect.translate(iconRect.right() + 4, 0);
|
||||
}
|
||||
@ -2561,7 +2561,7 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
|
||||
}
|
||||
if (!btn->icon.isNull()) {
|
||||
iconRect = itemPixmapRect(cr, Qt::AlignAbsolute | Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic,
|
||||
btn->icon.pixmap(qt_getWindow(widget), btn->iconSize, QIcon::Normal));
|
||||
btn->icon.pixmap(btn->iconSize, qt_getDevicePixelRatio(widget), QIcon::Normal));
|
||||
if (!textRect.isEmpty())
|
||||
textRect.translate(iconRect.right() + 4, 0);
|
||||
}
|
||||
@ -3554,9 +3554,9 @@ void QCommonStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCompl
|
||||
|| qobject_cast<const QDockWidget *>(widget)
|
||||
#endif
|
||||
)
|
||||
pm = proxy()->standardIcon(SP_DockWidgetCloseButton, &tool, widget).pixmap(qt_getWindow(widget), QSize(10, 10));
|
||||
pm = proxy()->standardIcon(SP_DockWidgetCloseButton, &tool, widget).pixmap(QSize(10, 10), p->device()->devicePixelRatio());
|
||||
else
|
||||
pm = proxy()->standardIcon(SP_TitleBarCloseButton, &tool, widget).pixmap(qt_getWindow(widget), QSize(10, 10));
|
||||
pm = proxy()->standardIcon(SP_TitleBarCloseButton, &tool, widget).pixmap(QSize(10, 10), p->device()->devicePixelRatio());
|
||||
tool.rect = ir;
|
||||
tool.state = down ? State_Sunken : State_Raised;
|
||||
proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p, widget);
|
||||
@ -3575,7 +3575,7 @@ void QCommonStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCompl
|
||||
ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarMaxButton, widget);
|
||||
|
||||
down = tb->activeSubControls & SC_TitleBarMaxButton && (opt->state & State_Sunken);
|
||||
pm = proxy()->standardIcon(SP_TitleBarMaxButton, &tool, widget).pixmap(qt_getWindow(widget), QSize(10, 10));
|
||||
pm = proxy()->standardIcon(SP_TitleBarMaxButton, &tool, widget).pixmap(QSize(10, 10), p->device()->devicePixelRatio());
|
||||
tool.rect = ir;
|
||||
tool.state = down ? State_Sunken : State_Raised;
|
||||
proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p, widget);
|
||||
@ -3593,7 +3593,7 @@ void QCommonStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCompl
|
||||
&& !(tb->titleBarState & Qt::WindowMinimized)) {
|
||||
ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarMinButton, widget);
|
||||
down = tb->activeSubControls & SC_TitleBarMinButton && (opt->state & State_Sunken);
|
||||
pm = proxy()->standardIcon(SP_TitleBarMinButton, &tool, widget).pixmap(qt_getWindow(widget), QSize(10, 10));
|
||||
pm = proxy()->standardIcon(SP_TitleBarMinButton, &tool, widget).pixmap(QSize(10, 10), p->device()->devicePixelRatio());
|
||||
tool.rect = ir;
|
||||
tool.state = down ? State_Sunken : State_Raised;
|
||||
proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p, widget);
|
||||
@ -3615,7 +3615,7 @@ void QCommonStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCompl
|
||||
if (drawNormalButton) {
|
||||
ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarNormalButton, widget);
|
||||
down = tb->activeSubControls & SC_TitleBarNormalButton && (opt->state & State_Sunken);
|
||||
pm = proxy()->standardIcon(SP_TitleBarNormalButton, &tool, widget).pixmap(qt_getWindow(widget), QSize(10, 10));
|
||||
pm = proxy()->standardIcon(SP_TitleBarNormalButton, &tool, widget).pixmap(QSize(10, 10), p->device()->devicePixelRatio());
|
||||
tool.rect = ir;
|
||||
tool.state = down ? State_Sunken : State_Raised;
|
||||
proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p, widget);
|
||||
@ -3633,7 +3633,7 @@ void QCommonStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCompl
|
||||
&& !(tb->titleBarState & Qt::WindowMinimized)) {
|
||||
ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarShadeButton, widget);
|
||||
down = (tb->activeSubControls & SC_TitleBarShadeButton && (opt->state & State_Sunken));
|
||||
pm = proxy()->standardIcon(SP_TitleBarShadeButton, &tool, widget).pixmap(qt_getWindow(widget), QSize(10, 10));
|
||||
pm = proxy()->standardIcon(SP_TitleBarShadeButton, &tool, widget).pixmap(QSize(10, 10), p->device()->devicePixelRatio());
|
||||
tool.rect = ir;
|
||||
tool.state = down ? State_Sunken : State_Raised;
|
||||
proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p, widget);
|
||||
@ -3651,7 +3651,7 @@ void QCommonStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCompl
|
||||
ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarUnshadeButton, widget);
|
||||
|
||||
down = tb->activeSubControls & SC_TitleBarUnshadeButton && (opt->state & State_Sunken);
|
||||
pm = proxy()->standardIcon(SP_TitleBarUnshadeButton, &tool, widget).pixmap(qt_getWindow(widget), QSize(10, 10));
|
||||
pm = proxy()->standardIcon(SP_TitleBarUnshadeButton, &tool, widget).pixmap(QSize(10, 10), p->device()->devicePixelRatio());
|
||||
tool.rect = ir;
|
||||
tool.state = down ? State_Sunken : State_Raised;
|
||||
proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p, widget);
|
||||
@ -3667,7 +3667,7 @@ void QCommonStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCompl
|
||||
ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarContextHelpButton, widget);
|
||||
|
||||
down = tb->activeSubControls & SC_TitleBarContextHelpButton && (opt->state & State_Sunken);
|
||||
pm = proxy()->standardIcon(SP_TitleBarContextHelpButton, &tool, widget).pixmap(qt_getWindow(widget), QSize(10, 10));
|
||||
pm = proxy()->standardIcon(SP_TitleBarContextHelpButton, &tool, widget).pixmap(QSize(10, 10), p->device()->devicePixelRatio());
|
||||
tool.rect = ir;
|
||||
tool.state = down ? State_Sunken : State_Raised;
|
||||
proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p, widget);
|
||||
@ -3684,7 +3684,7 @@ void QCommonStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCompl
|
||||
tb->icon.paint(p, ir);
|
||||
} else {
|
||||
int iconSize = proxy()->pixelMetric(PM_SmallIconSize, tb, widget);
|
||||
pm = proxy()->standardIcon(SP_TitleBarMenuButton, &tool, widget).pixmap(qt_getWindow(widget), QSize(iconSize, iconSize));
|
||||
pm = proxy()->standardIcon(SP_TitleBarMenuButton, &tool, widget).pixmap(QSize(iconSize, iconSize), p->device()->devicePixelRatio());
|
||||
tool.rect = ir;
|
||||
p->save();
|
||||
proxy()->drawItemPixmap(p, ir, Qt::AlignCenter, pm);
|
||||
@ -3873,7 +3873,7 @@ void QCommonStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCompl
|
||||
}
|
||||
btnOpt.rect = proxy()->subControlRect(CC_MdiControls, opt, SC_MdiCloseButton, widget);
|
||||
proxy()->drawPrimitive(PE_PanelButtonCommand, &btnOpt, p, widget);
|
||||
QPixmap pm = proxy()->standardIcon(SP_TitleBarCloseButton).pixmap(qt_getWindow(widget), buttonIconSize);
|
||||
QPixmap pm = proxy()->standardIcon(SP_TitleBarCloseButton).pixmap(buttonIconSize, p->device()->devicePixelRatio());
|
||||
proxy()->drawItemPixmap(p, btnOpt.rect.translated(bsx, bsy), Qt::AlignCenter, pm);
|
||||
}
|
||||
if (opt->subControls & QStyle::SC_MdiNormalButton) {
|
||||
@ -3890,7 +3890,7 @@ void QCommonStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCompl
|
||||
}
|
||||
btnOpt.rect = proxy()->subControlRect(CC_MdiControls, opt, SC_MdiNormalButton, widget);
|
||||
proxy()->drawPrimitive(PE_PanelButtonCommand, &btnOpt, p, widget);
|
||||
QPixmap pm = proxy()->standardIcon(SP_TitleBarNormalButton).pixmap(qt_getWindow(widget), buttonIconSize);
|
||||
QPixmap pm = proxy()->standardIcon(SP_TitleBarNormalButton).pixmap(buttonIconSize, p->device()->devicePixelRatio());
|
||||
proxy()->drawItemPixmap(p, btnOpt.rect.translated(bsx, bsy), Qt::AlignCenter, pm);
|
||||
}
|
||||
if (opt->subControls & QStyle::SC_MdiMinButton) {
|
||||
@ -3907,7 +3907,7 @@ void QCommonStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCompl
|
||||
}
|
||||
btnOpt.rect = proxy()->subControlRect(CC_MdiControls, opt, SC_MdiMinButton, widget);
|
||||
proxy()->drawPrimitive(PE_PanelButtonCommand, &btnOpt, p, widget);
|
||||
QPixmap pm = proxy()->standardIcon(SP_TitleBarMinButton).pixmap(qt_getWindow(widget), buttonIconSize);
|
||||
QPixmap pm = proxy()->standardIcon(SP_TitleBarMinButton).pixmap(buttonIconSize, p->device()->devicePixelRatio());
|
||||
proxy()->drawItemPixmap(p, btnOpt.rect.translated(bsx, bsy), Qt::AlignCenter, pm);
|
||||
}
|
||||
}
|
||||
@ -6023,8 +6023,8 @@ QIcon QCommonStyle::standardIcon(StandardPixmap standardIcon, const QStyleOption
|
||||
const QList<QSize> sizes = baseIcon.availableSizes(QIcon::Normal, QIcon::Off);
|
||||
for (int i = 0 ; i < sizes.size() ; ++i) {
|
||||
int size = sizes[i].width();
|
||||
QPixmap basePixmap = baseIcon.pixmap(qt_getWindow(widget), QSize(size, size));
|
||||
QPixmap linkPixmap = linkIcon.pixmap(qt_getWindow(widget), QSize(size / 2, size / 2));
|
||||
QPixmap basePixmap = baseIcon.pixmap(QSize(size, size), qt_getDevicePixelRatio(widget));
|
||||
QPixmap linkPixmap = linkIcon.pixmap(QSize(size / 2, size / 2), qt_getDevicePixelRatio(widget));
|
||||
QPainter painter(&basePixmap);
|
||||
painter.drawPixmap(size/2, size/2, linkPixmap);
|
||||
icon.addPixmap(basePixmap);
|
||||
@ -6040,8 +6040,8 @@ QIcon QCommonStyle::standardIcon(StandardPixmap standardIcon, const QStyleOption
|
||||
const QList<QSize> sizes = baseIcon.availableSizes(QIcon::Normal, QIcon::Off);
|
||||
for (int i = 0 ; i < sizes.size() ; ++i) {
|
||||
int size = sizes[i].width();
|
||||
QPixmap basePixmap = baseIcon.pixmap(qt_getWindow(widget), QSize(size, size));
|
||||
QPixmap linkPixmap = linkIcon.pixmap(qt_getWindow(widget), QSize(size / 2, size / 2));
|
||||
QPixmap basePixmap = baseIcon.pixmap(QSize(size, size), qt_getDevicePixelRatio(widget));
|
||||
QPixmap linkPixmap = linkIcon.pixmap(QSize(size / 2, size / 2), qt_getDevicePixelRatio(widget));
|
||||
QPainter painter(&basePixmap);
|
||||
painter.drawPixmap(size/2, size/2, linkPixmap);
|
||||
icon.addPixmap(basePixmap);
|
||||
|
@ -366,11 +366,6 @@ static void qt_fusion_draw_mdibutton(QPainter *painter, const QStyleOptionTitleB
|
||||
painter->drawPoint(tmp.right() , tmp.bottom() - 1);
|
||||
}
|
||||
|
||||
static QWindow *qt_getWindow(const QWidget *widget)
|
||||
{
|
||||
return widget ? QWidgetPrivate::get(widget)->windowHandle(QWidgetPrivate::WindowHandleMode::Closest) : nullptr;
|
||||
}
|
||||
|
||||
/*
|
||||
\internal
|
||||
*/
|
||||
@ -1002,7 +997,7 @@ void QFusionStyle::drawPrimitive(PrimitiveElement elem,
|
||||
d->tabBarcloseButtonIcon = proxy()->standardIcon(SP_DialogCloseButton, option, widget);
|
||||
if ((option->state & State_Enabled) && (option->state & State_MouseOver))
|
||||
proxy()->drawPrimitive(PE_PanelButtonCommand, option, painter, widget);
|
||||
QPixmap pixmap = d->tabBarcloseButtonIcon.pixmap(qt_getWindow(widget), QSize(16, 16), QIcon::Normal, QIcon::On);
|
||||
QPixmap pixmap = d->tabBarcloseButtonIcon.pixmap(QSize(16, 16), painter->device()->devicePixelRatio(), QIcon::Normal, QIcon::On);
|
||||
proxy()->drawItemPixmap(painter, option->rect, Qt::AlignCenter, pixmap);
|
||||
}
|
||||
break;
|
||||
@ -1042,7 +1037,7 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio
|
||||
if (!cb->currentIcon.isNull()) {
|
||||
QIcon::Mode mode = cb->state & State_Enabled ? QIcon::Normal
|
||||
: QIcon::Disabled;
|
||||
QPixmap pixmap = cb->currentIcon.pixmap(qt_getWindow(widget), cb->iconSize, mode);
|
||||
QPixmap pixmap = cb->currentIcon.pixmap(cb->iconSize, painter->device()->devicePixelRatio(), mode);
|
||||
QRect iconRect(editRect);
|
||||
iconRect.setWidth(cb->iconSize.width() + 4);
|
||||
iconRect = alignedRect(cb->direction,
|
||||
@ -1656,9 +1651,9 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio
|
||||
iconSize = combo->iconSize();
|
||||
#endif
|
||||
if (checked)
|
||||
pixmap = menuItem->icon.pixmap(qt_getWindow(widget), iconSize, mode, QIcon::On);
|
||||
pixmap = menuItem->icon.pixmap(iconSize, painter->device()->devicePixelRatio(), mode, QIcon::On);
|
||||
else
|
||||
pixmap = menuItem->icon.pixmap(qt_getWindow(widget), iconSize, mode);
|
||||
pixmap = menuItem->icon.pixmap(iconSize, painter->device()->devicePixelRatio(), mode);
|
||||
|
||||
const int pixw = pixmap.width() / pixmap.devicePixelRatio();
|
||||
const int pixh = pixmap.height() / pixmap.devicePixelRatio();
|
||||
|
@ -355,14 +355,13 @@ QLineEditPrivate *QLineEditIconButton::lineEditPrivate() const
|
||||
void QLineEditIconButton::paintEvent(QPaintEvent *)
|
||||
{
|
||||
QPainter painter(this);
|
||||
QWindow *window = qt_widget_private(this)->windowHandle(QWidgetPrivate::WindowHandleMode::Closest);
|
||||
QIcon::Mode state = QIcon::Disabled;
|
||||
if (isEnabled())
|
||||
state = isDown() ? QIcon::Active : QIcon::Normal;
|
||||
const QLineEditPrivate *lep = lineEditPrivate();
|
||||
const int iconWidth = lep ? lep->sideWidgetParameters().iconSize : 16;
|
||||
const QSize iconSize(iconWidth, iconWidth);
|
||||
const QPixmap iconPixmap = icon().pixmap(window, iconSize, state, QIcon::Off);
|
||||
const QPixmap iconPixmap = icon().pixmap(iconSize, devicePixelRatio(), state, QIcon::Off);
|
||||
QRect pixmapRect = QRect(QPoint(0, 0), iconSize);
|
||||
pixmapRect.moveCenter(rect().center());
|
||||
painter.setOpacity(m_opacity);
|
||||
|
Loading…
Reference in New Issue
Block a user