summaryrefslogtreecommitdiff
path: root/debian/patches/0255-qtreeview-selection-columns-hidden.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/0255-qtreeview-selection-columns-hidden.diff')
-rw-r--r--debian/patches/0255-qtreeview-selection-columns-hidden.diff42
1 files changed, 42 insertions, 0 deletions
diff --git a/debian/patches/0255-qtreeview-selection-columns-hidden.diff b/debian/patches/0255-qtreeview-selection-columns-hidden.diff
new file mode 100644
index 0000000..4a15b35
--- /dev/null
+++ b/debian/patches/0255-qtreeview-selection-columns-hidden.diff
@@ -0,0 +1,42 @@
+qt-bugs@ issue : N232819
+Trolltech task ID : 232831
+applied: no
+author: Rafael Fernández López <ereslibre@kde.org>
+
+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).
+
+--- a/src/gui/itemviews/qtreeview.cpp
++++ b/src/gui/itemviews/qtreeview.cpp
+@@ -3530,7 +3530,7 @@ QList<QPair<int, int> > QTreeViewPrivate
+ 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;