summaryrefslogtreecommitdiffstats
path: root/src/gui/itemviews
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/itemviews')
-rw-r--r--src/gui/itemviews/qtreeview.cpp11
-rw-r--r--src/gui/itemviews/qtreeview_p.h2
2 files changed, 7 insertions, 6 deletions
diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp
index 813787f..4006601 100644
--- a/src/gui/itemviews/qtreeview.cpp
+++ b/src/gui/itemviews/qtreeview.cpp
@@ -1390,7 +1390,10 @@ void QTreeViewPrivate::adjustViewOptionsForIndex(QStyleOptionViewItemV4 *option,
QVector<int> logicalIndices; // index = visual index of visible columns only. data = logical index.
QVector<QStyleOptionViewItemV4::ViewItemPosition> viewItemPosList; // vector of left/middle/end for each logicalIndex, visible columns only.
- calcLogicalIndices(&logicalIndices, &viewItemPosList);
+ const bool spanning = viewItems.at(row).spanning;
+ const int left = (spanning ? header->visualIndex(0) : 0);
+ const int right = (spanning ? header->visualIndex(0) : header->count() - 1 );
+ calcLogicalIndices(&logicalIndices, &viewItemPosList, left, right);
int columnIndex = 0;
for (int visualIndex = 0; visualIndex < current.column(); ++visualIndex) {
@@ -1488,10 +1491,8 @@ static inline bool ancestorOf(QObject *widget, QObject *other)
return false;
}
-void QTreeViewPrivate::calcLogicalIndices(QVector<int> *logicalIndices, QVector<QStyleOptionViewItemV4::ViewItemPosition> *itemPositions) const
+void QTreeViewPrivate::calcLogicalIndices(QVector<int> *logicalIndices, QVector<QStyleOptionViewItemV4::ViewItemPosition> *itemPositions, int left, int right) const
{
- const int left = (spanning ? header->visualIndex(0) : leftAndRight.first);
- const int right = (spanning ? header->visualIndex(0) : leftAndRight.second);
const int columnCount = header->count();
/* 'left' and 'right' are the left-most and right-most visible visual indices.
Compute the first visible logical indices before and after the left and right.
@@ -1615,7 +1616,7 @@ void QTreeView::drawRow(QPainter *painter, const QStyleOptionViewItem &option,
QVector<int> logicalIndices;
QVector<QStyleOptionViewItemV4::ViewItemPosition> viewItemPosList; // vector of left/middle/end for each logicalIndex
- d->calcLogicalIndices(&logicalIndices, &viewItemPosList);
+ d->calcLogicalIndices(&logicalIndices, &viewItemPosList, left, right);
for (int currentLogicalSection = 0; currentLogicalSection < logicalIndices.count(); ++currentLogicalSection) {
int headerSection = logicalIndices.at(currentLogicalSection);
diff --git a/src/gui/itemviews/qtreeview_p.h b/src/gui/itemviews/qtreeview_p.h
index 1124b6c..a9b3fc9 100644
--- a/src/gui/itemviews/qtreeview_p.h
+++ b/src/gui/itemviews/qtreeview_p.h
@@ -170,7 +170,7 @@ public:
// logicalIndices: vector of currently visibly logical indices
// itemPositions: vector of view item positions (beginning/middle/end/onlyone)
- void calcLogicalIndices(QVector<int> *logicalIndices, QVector<QStyleOptionViewItemV4::ViewItemPosition> *itemPositions) const;
+ void calcLogicalIndices(QVector<int> *logicalIndices, QVector<QStyleOptionViewItemV4::ViewItemPosition> *itemPositions, int left, int right) const;
QHeaderView *header;
int indent;