summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDaniel Teske <qt@squorn.de>2017-11-03 13:24:18 +0100
committerDaniel Teske <qt@squorn.de>2018-04-30 19:01:01 +0000
commitedf6debbabe997dee9e636a831ccff73d184b6c1 (patch)
treee730b940b04b81ba25c657b09f5c0a82799e3dd7 /src
parentd6b9cba812ffc6c191edcc9d578067b374b169af (diff)
QitemSelectionModel: Fix a bug in isColumnSelected
Previously the code for isColumnSelected and isRowSelected differed slightly, in how unselectable indexes would be treated. This made isColumnSelected return false for a column, which mixed unselectable indexes and selected indexes. Thus in some situations, the user could not deselect a column via a QTableView header. By copying the isRowSelected code to isColumnSelected, rows and columns behave identical. Task-number: QTBUG-18001 Change-Id: I6ca85ac64b31a481fafeaa3bec958b18283eed8d Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/corelib/itemmodels/qitemselectionmodel.cpp b/src/corelib/itemmodels/qitemselectionmodel.cpp
index 9af4fd9133..ceec0e4c94 100644
--- a/src/corelib/itemmodels/qitemselectionmodel.cpp
+++ b/src/corelib/itemmodels/qitemselectionmodel.cpp
@@ -1577,8 +1577,12 @@ bool QItemSelectionModel::isColumnSelected(int column, const QModelIndex &parent
for (int row = 0; row < rowCount; ++row) {
for (it = joined.constBegin(); it != joined.constEnd(); ++it) {
if ((*it).contains(row, column, parent)) {
- Qt::ItemFlags flags = d->model->index(row, column, parent).flags();
- if ((flags & Qt::ItemIsSelectable) && (flags & Qt::ItemIsEnabled)) {
+ bool selectable = false;
+ for (int i = row; !selectable && i <= (*it).bottom(); ++i) {
+ Qt::ItemFlags flags = d->model->index(i, column, parent).flags();
+ selectable = flags & Qt::ItemIsSelectable;
+ }
+ if (selectable){
row = qMax(row, (*it).bottom());
break;
}