Blob Blame History Raw
From 1ec9dd029abaa0f00798535fdb1722154b1c63f6 Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Rafael=20Fern=C3=A1ndez=20L=C3=B3pez?= <ereslibre@kde.org>
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<QPair<int, int> > 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