X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/0abbaf9e11d166da461bb33bc6abeb5ddfb5fa2c..d57134a03338de4230405081f2e22d196382d589:/src/klistview.cpp diff --git a/src/klistview.cpp b/src/klistview.cpp index df8150a11..206853530 100644 --- a/src/klistview.cpp +++ b/src/klistview.cpp @@ -399,8 +399,8 @@ void KListView::Private::drawDraggedItems(QPainter *painter) option.state &= ~QStyle::State_MouseOver; foreach (const QModelIndex &index, listView->selectionModel()->selectedIndexes()) { - int dx = mousePosition.x() - initialPressPosition.x(); - int dy = mousePosition.y() - initialPressPosition.y(); + int dx = mousePosition.x() - initialPressPosition.x() + listView->horizontalOffset(); + int dy = mousePosition.y() - initialPressPosition.y() + listView->verticalOffset(); option.rect = visualRect(index); option.rect.adjust(dx, dy, dx, dy); @@ -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)))