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);
}
QItemSelection selection;
+ QItemSelection deselect;
QModelIndexList dirtyIndexes = d->intersectionSet(rect);
foreach (const QModelIndex &index, dirtyIndexes)
{
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
{
}
}
- QItemSelection deselect;
-
foreach (const QModelIndex &index, d->isIndexSelected.keys())
{
if (!rect.intersects(visualRect(index)))