QMacStyle: skip 'custom' rendering of CE_HeaderLabel

Instead, similar to 'Fusion' style use what common style can do,
thus respecting text alignment and not always forcing VCenter
alignment.

Fixes: QTBUG-97698
Change-Id: I89ad01807afc217c3c33650e1f1d255d0b81ed46
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
Timur Pocheptsov 2021-11-04 16:26:35 +01:00
parent 7d7663cfc4
commit 081a2b9b1f

View File

@ -3556,34 +3556,6 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
ir.right() - headerSectionSeparatorInset, ir.bottom()));
}
break;
case CE_HeaderLabel:
if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(opt)) {
p->save();
QRect textr = header->rect;
if (!header->icon.isNull()) {
QIcon::Mode mode = QIcon::Disabled;
if (opt->state & State_Enabled)
mode = QIcon::Normal;
int iconExtent = proxy()->pixelMetric(PM_SmallIconSize);
QPixmap pixmap = header->icon.pixmap(QSize(iconExtent, iconExtent), p->device()->devicePixelRatio(), mode);
QRect pixr = header->rect;
QSizeF size = pixmap.deviceIndependentSize();
pixr.setY(header->rect.center().y() - (size.height() - 1) / 2);
proxy()->drawItemPixmap(p, pixr, Qt::AlignVCenter, pixmap);
textr.translate(size.width() + 2, 0);
}
QString text = header->text;
if (const QStyleOptionHeaderV2 *headerV2 = qstyleoption_cast<const QStyleOptionHeaderV2 *>(header)) {
if (headerV2->textElideMode != Qt::ElideNone)
text = header->fontMetrics.elidedText(text, headerV2->textElideMode, textr.width());
}
proxy()->drawItemText(p, textr, header->textAlignment | Qt::AlignVCenter, header->palette,
header->state.testFlag(State_Enabled), text, QPalette::ButtonText);
p->restore();
}
break;
case CE_ToolButtonLabel:
if (const QStyleOptionToolButton *tb = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) {