Rex Dieter 0aff623
From 6d76e943dab0971d376cebb15fe531efc60622ac Mon Sep 17 00:00:00 2001
Rex Dieter 0aff623
From: Friedemann Kleint <Friedemann.Kleint@digia.com>
Rex Dieter 0aff623
Date: Mon, 5 May 2014 10:59:56 +0200
Rex Dieter 0aff623
Subject: [PATCH 25/37] Fix visual index lookup in
Rex Dieter 0aff623
 QTreeViewPrivate::adjustViewOptionsForIndex().
Rex Dieter 0aff623
Rex Dieter 0aff623
Determine the visual index by looking up the column of the QModelIndex
Rex Dieter 0aff623
in the logicalIndices array instead of looping.
Rex Dieter 0aff623
Rex Dieter 0aff623
Task-number: QTBUG-37813
Rex Dieter 0aff623
Change-Id: I5c3c73c67537877b03cdc2c36a52041d99f7f49d
Rex Dieter 0aff623
Reviewed-by: David Faure <david.faure@kdab.com>
Rex Dieter 0aff623
(cherry picked from qtbase/85aef2dd4b059d2ba9cba4605d9fef87f3e2c4fc)
Rex Dieter 0aff623
---
Rex Dieter 0aff623
 src/gui/itemviews/qtreeview.cpp        | 11 ++---------
Rex Dieter 0aff623
 tests/auto/qtreeview/tst_qtreeview.cpp | 27 +++++++++++++++++++++++++++
Rex Dieter 0aff623
 2 files changed, 29 insertions(+), 9 deletions(-)
Rex Dieter 0aff623
Rex Dieter 0aff623
diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp
Rex Dieter 0aff623
index f506f48..fdf020e 100644
Rex Dieter 0aff623
--- a/src/gui/itemviews/qtreeview.cpp
Rex Dieter 0aff623
+++ b/src/gui/itemviews/qtreeview.cpp
Rex Dieter 0aff623
@@ -1367,15 +1367,8 @@ void QTreeViewPrivate::adjustViewOptionsForIndex(QStyleOptionViewItemV4 *option,
Rex Dieter 0aff623
     const int right = (spanning ? header->visualIndex(0) : header->count() - 1 );
Rex Dieter 0aff623
     calcLogicalIndices(&logicalIndices, &viewItemPosList, left, right);
Rex Dieter 0aff623
 
Rex Dieter 0aff623
-    int columnIndex = 0;
Rex Dieter 0aff623
-    for (int visualIndex = 0; visualIndex < current.column(); ++visualIndex) {
Rex Dieter 0aff623
-        int logicalIndex = header->logicalIndex(visualIndex);
Rex Dieter 0aff623
-        if (!header->isSectionHidden(logicalIndex)) {
Rex Dieter 0aff623
-            ++columnIndex;
Rex Dieter 0aff623
-        }
Rex Dieter 0aff623
-    }
Rex Dieter 0aff623
-
Rex Dieter 0aff623
-    option->viewItemPosition = viewItemPosList.at(columnIndex);
Rex Dieter 0aff623
+    const int visualIndex = logicalIndices.indexOf(current.column());
Rex Dieter 0aff623
+    option->viewItemPosition = viewItemPosList.at(visualIndex);
Rex Dieter 0aff623
 }
Rex Dieter 0aff623
 
Rex Dieter 0aff623
 
Rex Dieter 0aff623
-- 
Rex Dieter 0aff623
1.9.3
Rex Dieter 0aff623