diff options
Diffstat (limited to 'src/klistview.cpp')
| -rw-r--r-- | src/klistview.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/klistview.cpp b/src/klistview.cpp index 1729e1a80..206853530 100644 --- a/src/klistview.cpp +++ b/src/klistview.cpp @@ -699,6 +699,7 @@ void KListView::setSelection(const QRect &rect, } QItemSelection selection; + QItemSelection deselect; QModelIndexList dirtyIndexes = d->intersectionSet(rect); foreach (const QModelIndex &index, dirtyIndexes) { @@ -707,9 +708,15 @@ void KListView::setSelection(const QRect &rect, if (d->isIndexSelected.contains(index)) { if (!d->isIndexSelected[index]) + { selection.select(index, index); - - d->isIndexSelected[index] = true; + d->isIndexSelected[index] = true; + } + else + { + deselect.select(index, index); + d->isIndexSelected[index] = false; + } } else { @@ -747,8 +754,6 @@ void KListView::setSelection(const QRect &rect, } } - QItemSelection deselect; - foreach (const QModelIndex &index, d->isIndexSelected.keys()) { if (!rect.intersects(visualRect(index))) |
