summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/itemviews/qheaderview.cpp24
-rw-r--r--src/widgets/itemviews/qheaderview_p.h2
-rw-r--r--src/widgets/widgets/qmdiarea.cpp2
3 files changed, 24 insertions, 4 deletions
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp
index e0034d1298..75cd07bb80 100644
--- a/src/widgets/itemviews/qheaderview.cpp
+++ b/src/widgets/itemviews/qheaderview.cpp
@@ -2711,11 +2711,13 @@ void QHeaderView::paintSection(QPainter *painter, const QRect &rect, int logical
// the section position
int visual = visualIndex(logicalIndex);
Q_ASSERT(visual != -1);
- if (count() == 1)
+ bool first = d->isFirstVisibleSection(visual);
+ bool last = d->isLastVisibleSection(visual);
+ if (first && last)
opt.position = QStyleOptionHeader::OnlyOneSection;
- else if (visual == 0)
+ else if (first)
opt.position = QStyleOptionHeader::Beginning;
- else if (visual == count() - 1)
+ else if (last)
opt.position = QStyleOptionHeader::End;
else
opt.position = QStyleOptionHeader::Middle;
@@ -3138,6 +3140,22 @@ bool QHeaderViewPrivate::isSectionSelected(int section) const
return s;
}
+bool QHeaderViewPrivate::isFirstVisibleSection(int section) const
+{
+ if (sectionStartposRecalc)
+ recalcSectionStartPos();
+ const SectionItem &item = sectionItems.at(section);
+ return item.size > 0 && item.calculated_startpos == 0;
+}
+
+bool QHeaderViewPrivate::isLastVisibleSection(int section) const
+{
+ if (sectionStartposRecalc)
+ recalcSectionStartPos();
+ const SectionItem &item = sectionItems.at(section);
+ return item.size > 0 && item.calculatedEndPos() == length;
+}
+
/*!
\internal
Returns the last visible (ie. not hidden) visual index
diff --git a/src/widgets/itemviews/qheaderview_p.h b/src/widgets/itemviews/qheaderview_p.h
index 2bbd21a942..a8c620b9d2 100644
--- a/src/widgets/itemviews/qheaderview_p.h
+++ b/src/widgets/itemviews/qheaderview_p.h
@@ -115,6 +115,8 @@ public:
void _q_layoutChanged();
bool isSectionSelected(int section) const;
+ bool isFirstVisibleSection(int section) const;
+ bool isLastVisibleSection(int section) const;
inline bool rowIntersectsSelection(int row) const {
return (selectionModel ? selectionModel->rowIntersectsSelection(row, root) : false);
diff --git a/src/widgets/widgets/qmdiarea.cpp b/src/widgets/widgets/qmdiarea.cpp
index b2409e300c..13c9bf8deb 100644
--- a/src/widgets/widgets/qmdiarea.cpp
+++ b/src/widgets/widgets/qmdiarea.cpp
@@ -2043,7 +2043,7 @@ void QMdiArea::setBackground(const QBrush &brush)
if (d->background != brush) {
d->background = brush;
d->viewport->setAttribute(Qt::WA_OpaquePaintEvent, brush.isOpaque());
- update();
+ d->viewport->update();
}
}