53 lines
2.0 KiB
Diff
53 lines
2.0 KiB
Diff
|
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
|
||
|
|