diff options
author | David Faure <david.faure@kdab.com> | 2011-11-29 20:55:26 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-12 08:31:17 +0100 |
commit | 1319bd48c8c21e1fadaf572f8f39528f52672035 (patch) | |
tree | 3287fc83fe15679f4169141e779895a0af3b11bd /src | |
parent | 22b7d211865c1505862627a2e65bcd063e314e45 (diff) |
QTreeView: fix crash when starting a drag with hidden columns.
Crash was introduced by d639105759491 (pre-Qt-4.8 only)
Task-number: QTBUG-15834
Merge-request: MR-2725
(cherry picked from qt4 commit fd25323de7b5d5f3e0ffb1bd81ea4d251e071566)
Change-Id: I59959d3ba4c9bcb0d39bdbe58432817bbbfdd9f1
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/widgets/itemviews/qtreeview.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp index 1a1dc85ae6..368be3a6c8 100644 --- a/src/widgets/itemviews/qtreeview.cpp +++ b/src/widgets/itemviews/qtreeview.cpp @@ -1388,11 +1388,19 @@ void QTreeViewPrivate::adjustViewOptionsForIndex(QStyleOptionViewItemV4 *option, option->showDecorationSelected = (selectionBehavior & QTreeView::SelectRows) || option->showDecorationSelected; - QVector<int> logicalIndices; - QVector<QStyleOptionViewItemV4::ViewItemPosition> viewItemPosList; // vector of left/middle/end for each logicalIndex + 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); - int logicalIndex = header->logicalIndex(current.column()); - option->viewItemPosition = viewItemPosList.at(logicalIndex); + + int columnIndex = 0; + for (int visualIndex = 0; visualIndex < current.column(); ++visualIndex) { + int logicalIndex = header->logicalIndex(visualIndex); + if (!header->isSectionHidden(logicalIndex)) { + ++columnIndex; + } + } + + option->viewItemPosition = viewItemPosList.at(columnIndex); } |