diff options
author | Daniel Teske <qt@squorn.de> | 2017-11-03 13:24:18 +0100 |
---|---|---|
committer | Daniel Teske <qt@squorn.de> | 2018-04-30 19:01:01 +0000 |
commit | edf6debbabe997dee9e636a831ccff73d184b6c1 (patch) | |
tree | e730b940b04b81ba25c657b09f5c0a82799e3dd7 /src/corelib/itemmodels | |
parent | d6b9cba812ffc6c191edcc9d578067b374b169af (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/corelib/itemmodels')
-rw-r--r-- | src/corelib/itemmodels/qitemselectionmodel.cpp | 8 |
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; } |