diff options
author | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2018-01-12 20:33:53 +0100 |
---|---|---|
committer | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2018-02-02 14:49:51 +0000 |
commit | 2950de715ec8c48511090dcd13e1c44ae23cb561 (patch) | |
tree | a9426b78803f8e1fca1fe7354c355bdab9ac7b23 /src/widgets | |
parent | fd3f732489dfd3d522721a818e0e8f48fefce537 (diff) |
QHeaderView: consider Qt::DecorationRole size within paintSection()
When an icon was given through Qt::DecorationRole, the available space
for the text was not adjusted which created a graphical glitch.
Task-number: QTBUG-62091
Change-Id: I0f20b6de95deed14fb882efde5c81b83ab3e9a7e
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/itemviews/qheaderview.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp index 50287df6e0..585cfddff5 100644 --- a/src/widgets/itemviews/qheaderview.cpp +++ b/src/widgets/itemviews/qheaderview.cpp @@ -2848,14 +2848,18 @@ void QHeaderView::paintSection(QPainter *painter, const QRect &rect, int logical 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); - - QVariant variant = d->model->headerData(logicalIndex, d->orientation, - Qt::DecorationRole); + const QVariant variant = d->model->headerData(logicalIndex, d->orientation, + Qt::DecorationRole); opt.icon = qvariant_cast<QIcon>(variant); if (opt.icon.isNull()) opt.icon = qvariant_cast<QPixmap>(variant); + if (!opt.icon.isNull()) // see CT_HeaderSection + margin += style()->pixelMetric(QStyle::PM_SmallIconSize, 0, this) + + style()->pixelMetric(QStyle::PM_HeaderMargin, 0, this); + + if (d->textElideMode != Qt::ElideNone) + opt.text = opt.fontMetrics.elidedText(opt.text, d->textElideMode , rect.width() - margin); + QVariant foregroundBrush = d->model->headerData(logicalIndex, d->orientation, Qt::ForegroundRole); if (foregroundBrush.canConvert<QBrush>()) |