From 1ec9dd029abaa0f00798535fdb1722154b1c63f6 Mon Sep 17 00:00:00 2001 From: =?utf-8?q?Rafael=20Fern=C3=A1ndez=20L=C3=B3pez?= Date: Sun, 26 Oct 2008 10:40:51 +0100 Subject: [PATCH 08/18] In a treeview with columns like this: Column 1 | Column 2 | ... | Column k | ... | Column n When selecting with rubberband (by clicking on the blank part of the viewport) while Column k is hidden, you get double items on the selection model, when asking for selection(). This is becase ranges are incorrectly calculated when there are hidden columns. A way to reproduce: Column 1 | Column 2 | Column 4 (Column 3 is hidden) item item item x <- press button here and move it up to select items (on this same column) If you do like this: Column 1 | Column 2 | Column 4 (Column 3 is hidden) item item item x <- press button here and move it up you won't be able to reproduce, since you need the hidden column to be between the one you click and the last one. The reason is that columnRanges returns two ranges when there is supposed to return 1 range (even when there are hidden columns). qt-bugs@ issue : N232819 Trolltech task ID : 232831 bugs.kde.org number : 171436 --- src/gui/itemviews/qtreeview.cpp | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp index ed6ad03..dc147f2 100644 --- a/src/gui/itemviews/qtreeview.cpp +++ b/src/gui/itemviews/qtreeview.cpp @@ -3575,7 +3575,7 @@ QList > QTreeViewPrivate::columnRanges(const QModelIndex &topInd current.first = -2; // -1 is not enough because -1+1 = 0 current.second = -2; foreach (int logicalColumn, logicalIndexes) { - if (current.second + 1 != logicalColumn) { + if (current.second + 1 != logicalColumn && !header->isSectionHidden(current.second + 1)) { if (current.first != -2) { //let's save the current one ret += current; -- 1.6.2.5