QHeaderView: take the sort indicator into account when eliding text
By adding PM_HeaderMarkSize to the margins if the section is showing a sort indicator. Turns out that that particular enum was actually unused in QtWidgets (!), so tune the value to match reality. Task-number: QTBUG-629 Change-Id: I8bc70451656d634a064c8b5014e449977c55aa9d Reviewed-by: Cristian Oneț <onet.cristian@gmail.com> Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>bb10
parent
b5f8502c12
commit
b39bbc95f6
|
|
@ -1550,7 +1550,7 @@ int QHeaderView::minimumSectionSize() const
|
|||
Q_D(const QHeaderView);
|
||||
if (d->minimumSectionSize == -1) {
|
||||
QSize strut = QApplication::globalStrut();
|
||||
int margin = style()->pixelMetric(QStyle::PM_HeaderMargin, 0, this);
|
||||
int margin = 2 * style()->pixelMetric(QStyle::PM_HeaderMargin, 0, this);
|
||||
if (d->orientation == Qt::Horizontal)
|
||||
return qMax(strut.width(), (fontMetrics().maxWidth() + margin));
|
||||
return qMax(strut.height(), (fontMetrics().height() + margin));
|
||||
|
|
@ -2663,7 +2663,14 @@ void QHeaderView::paintSection(QPainter *painter, const QRect &rect, int logical
|
|||
opt.iconAlignment = Qt::AlignVCenter;
|
||||
opt.text = d->model->headerData(logicalIndex, d->orientation,
|
||||
Qt::DisplayRole).toString();
|
||||
const int margin = 2 * style()->pixelMetric(QStyle::PM_HeaderMargin, 0, this);
|
||||
|
||||
int margin = 2 * style()->pixelMetric(QStyle::PM_HeaderMargin, 0, this);
|
||||
|
||||
const Qt::Alignment headerArrowAlignment = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_Header_ArrowAlignment, 0, this));
|
||||
const bool isHeaderArrowOnTheSide = headerArrowAlignment & Qt::AlignVCenter;
|
||||
if (isSortIndicatorShown() && sortIndicatorSection() == logicalIndex && isHeaderArrowOnTheSide)
|
||||
margin += style()->pixelMetric(QStyle::PM_HeaderMarkSize, 0, this);
|
||||
|
||||
if (d->textElideMode != Qt::ElideNone)
|
||||
opt.text = opt.fontMetrics.elidedText(opt.text, d->textElideMode , rect.width() - margin);
|
||||
|
||||
|
|
|
|||
|
|
@ -4587,7 +4587,7 @@ int QCommonStyle::pixelMetric(PixelMetric m, const QStyleOption *opt, const QWid
|
|||
ret = int(QStyleHelper::dpiScaled(4.));
|
||||
break;
|
||||
case PM_HeaderMarkSize:
|
||||
ret = int(QStyleHelper::dpiScaled(32.));
|
||||
ret = int(QStyleHelper::dpiScaled(16.));
|
||||
break;
|
||||
case PM_HeaderGripMargin:
|
||||
ret = int(QStyleHelper::dpiScaled(4.));
|
||||
|
|
|
|||
Loading…
Reference in New Issue