summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Ehrlicher <ch.ehrlicher@gmx.de>2020-12-08 21:23:48 +0100
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-12-10 19:40:57 +0100
commit6fa1038a85f8e0da7c91b510cf01fe1bbcf37c0f (patch)
treec0ec81582fd1d4f0fec7ae598babb9a6ae44bbee /src
parentac1008c16f58d95ae4ff0a7864e3bcb0783cc439 (diff)
QHeaderView: respect the font role while calculating the elided text
Amends 4d943846128118e1b9932a17ce6f977a0f4127a5: - The macOS style must now elide the text by it's own since it is no longer done by QHeaderView - Add documentation of QStyleOptionHeader::textElideMode - Remove unused variables from QHeaderView::initStyleOptionForIndex() Task-number: QTBUG-86426 Change-Id: I98fc6771c0cd56d6002390125ffbab1269f6dd39 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/styles/mac/qmacstyle_mac.mm5
-rw-r--r--src/widgets/itemviews/qheaderview.cpp10
-rw-r--r--src/widgets/styles/qstyleoption.cpp10
3 files changed, 14 insertions, 11 deletions
diff --git a/src/plugins/styles/mac/qmacstyle_mac.mm b/src/plugins/styles/mac/qmacstyle_mac.mm
index 152d51da1a..e6939a0fda 100644
--- a/src/plugins/styles/mac/qmacstyle_mac.mm
+++ b/src/plugins/styles/mac/qmacstyle_mac.mm
@@ -3520,9 +3520,12 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
proxy()->drawItemPixmap(p, pixr, Qt::AlignVCenter, pixmap);
textr.translate(pixmap.width() / pixmap.devicePixelRatio() + 2, 0);
}
+ QString text = header->text;
+ if (header->textElideMode != Qt::ElideNone)
+ text = header->fontMetrics.elidedText(text, header->textElideMode, textr.width());
proxy()->drawItemText(p, textr, header->textAlignment | Qt::AlignVCenter, header->palette,
- header->state & State_Enabled, header->text, QPalette::ButtonText);
+ header->state.testFlag(State_Enabled), text, QPalette::ButtonText);
p->restore();
}
break;
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp
index d6c9700ed3..1ddcad8fd0 100644
--- a/src/widgets/itemviews/qheaderview.cpp
+++ b/src/widgets/itemviews/qheaderview.cpp
@@ -2936,21 +2936,11 @@ void QHeaderView::initStyleOptionForIndex(QStyleOptionHeader *option, int logica
opt.text = d->model->headerData(logicalIndex, d->orientation,
Qt::DisplayRole).toString();
- int margin = 2 * style()->pixelMetric(QStyle::PM_HeaderMargin, nullptr, this);
-
- const Qt::Alignment headerArrowAlignment = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_Header_ArrowAlignment, nullptr, this));
- const bool isHeaderArrowOnTheSide = headerArrowAlignment & Qt::AlignVCenter;
- if (isSortIndicatorShown() && sortIndicatorSection() == logicalIndex && isHeaderArrowOnTheSide)
- margin += style()->pixelMetric(QStyle::PM_HeaderMarkSize, nullptr, this);
-
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, nullptr, this) +
- style()->pixelMetric(QStyle::PM_HeaderMargin, nullptr, this);
QVariant var = d->model->headerData(logicalIndex, d->orientation,
Qt::FontRole);
diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp
index 5bb5cca8b8..f4e5cba5e5 100644
--- a/src/widgets/styles/qstyleoption.cpp
+++ b/src/widgets/styles/qstyleoption.cpp
@@ -895,6 +895,16 @@ QStyleOptionHeader::QStyleOptionHeader(int version)
*/
/*!
+ \variable QStyleOptionHeader::textElideMode
+ \brief where ellipsis should be added for text that is too long to fit
+ into an item
+
+ The default value is Qt::ElideNone.
+
+ \sa Qt::TextElideMode
+*/
+
+/*!
\class QStyleOptionButton
\brief The QStyleOptionButton class is used to describe the
parameters for drawing buttons.