summaryrefslogtreecommitdiffstats
path: root/src/widgets/itemviews/qheaderview.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2017-12-30 17:39:21 +0100
committerLars Knoll <lars.knoll@qt.io>2018-01-02 09:58:44 +0100
commit0f315adf9199efcfafa44371464ab6d1fc866774 (patch)
tree35b67591255624c670aff0579e45b2973f56fd81 /src/widgets/itemviews/qheaderview.cpp
parent2b0eb3fac319a17dd92903106d501f0f06df871f (diff)
parent52b85212a2ec8ec5bf187f6cd00b669a45bcf0bd (diff)
Merge remote-tracking branch 'origin/5.10' into dev
Conflicts: .qmake.conf sc/corelib/io/qfsfileengine_p.h src/corelib/io/qstorageinfo_unix.cpp src/platformsupport/eglconvenience/qeglpbuffer_p.h src/platformsupport/input/libinput/qlibinputkeyboard.cpp src/platformsupport/input/libinput/qlibinputpointer.cpp src/plugins/platforms/cocoa/qcocoamenu.mm src/plugins/platforms/ios/qiosscreen.h src/plugins/platforms/ios/qioswindow.h src/plugins/platforms/ios/quiview.mm src/printsupport/dialogs/qpagesetupdialog_unix_p.h src/printsupport/dialogs/qprintpreviewdialog.cpp src/printsupport/widgets/qcupsjobwidget_p.h src/widgets/widgets/qmenu.cpp tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp Change-Id: Iecb4883122efe97ef0ed850271e6c51bab568e9c
Diffstat (limited to 'src/widgets/itemviews/qheaderview.cpp')
-rw-r--r--src/widgets/itemviews/qheaderview.cpp23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp
index abd5997ea1..3555c276ac 100644
--- a/src/widgets/itemviews/qheaderview.cpp
+++ b/src/widgets/itemviews/qheaderview.cpp
@@ -2331,18 +2331,20 @@ void QHeaderView::paintEvent(QPaintEvent *e)
d->prepareSectionSelected(); // clear and resize the bit array
QRect currentSectionRect;
- int logical;
const int width = d->viewport->width();
const int height = d->viewport->height();
+ const int rtlHorizontalOffset = d->reverse() ? 1 : 0;
for (int i = start; i <= end; ++i) {
if (d->isVisualIndexHidden(i))
continue;
painter.save();
- logical = logicalIndex(i);
+ const int logical = logicalIndex(i);
if (d->orientation == Qt::Horizontal) {
- currentSectionRect.setRect(sectionViewportPosition(logical), 0, sectionSize(logical), height);
+ currentSectionRect.setRect(sectionViewportPosition(logical) + rtlHorizontalOffset,
+ 0, sectionSize(logical), height);
} else {
- currentSectionRect.setRect(0, sectionViewportPosition(logical), width, sectionSize(logical));
+ currentSectionRect.setRect(0, sectionViewportPosition(logical),
+ width, sectionSize(logical));
}
currentSectionRect.translate(offset);
@@ -2800,9 +2802,9 @@ void QHeaderView::paintSection(QPainter *painter, const QRect &rect, int logical
if (first && last)
opt.position = QStyleOptionHeader::OnlyOneSection;
else if (first)
- opt.position = QStyleOptionHeader::Beginning;
+ opt.position = d->reverse() ? QStyleOptionHeader::End : QStyleOptionHeader::Beginning;
else if (last)
- opt.position = QStyleOptionHeader::End;
+ opt.position = d->reverse() ? QStyleOptionHeader::Beginning : QStyleOptionHeader::End;
else
opt.position = QStyleOptionHeader::Middle;
opt.orientation = d->orientation;
@@ -3181,6 +3183,15 @@ void QHeaderViewPrivate::setupSectionIndicator(int section, int position)
QRect rect(0, 0, w, h);
QPainter painter(&pm);
+ const QVariant variant = model->headerData(section, orientation,
+ Qt::FontRole);
+ if (variant.isValid() && variant.canConvert<QFont>()) {
+ const QFont sectionFont = qvariant_cast<QFont>(variant);
+ painter.setFont(sectionFont);
+ } else {
+ painter.setFont(q->font());
+ }
+
painter.setOpacity(0.75);
q->paintSection(&painter, rect, section);
painter.end();