From 1319bd48c8c21e1fadaf572f8f39528f52672035 Mon Sep 17 00:00:00 2001 From: David Faure Date: Tue, 29 Nov 2011 20:55:26 +0100 Subject: 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 --- src/widgets/itemviews/qtreeview.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/widgets/itemviews/qtreeview.cpp') 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 logicalIndices; - QVector viewItemPosList; // vector of left/middle/end for each logicalIndex + QVector logicalIndices; // index = visual index of visible columns only. data = logical index. + QVector 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); } -- cgit v1.2.3