diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/klistview.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/klistview.cpp b/src/klistview.cpp index 1e9e1b013..e3ea89e41 100644 --- a/src/klistview.cpp +++ b/src/klistview.cpp @@ -399,25 +399,29 @@ void KListView::Private::drawDraggedItems(QPainter *painter) option.rect = visualRect(index); option.rect.adjust(dx, dy, dx, dy); - listView->itemDelegate(index)->paint(painter, option, index); + if (option.rect.intersects(listView->viewport()->rect())) + { + listView->itemDelegate(index)->paint(painter, option, index); + } } } void KListView::Private::drawDraggedItems() { - int dx; - int dy; QRect rectToUpdate; QRect currentRect; foreach (const QModelIndex &index, listView->selectionModel()->selectedIndexes()) { - dx = mousePosition.x() - initialPressPosition.x() + listView->horizontalOffset(); - dy = mousePosition.y() - initialPressPosition.y() + listView->verticalOffset(); + int dx = mousePosition.x() - initialPressPosition.x() + listView->horizontalOffset(); + int dy = mousePosition.y() - initialPressPosition.y() + listView->verticalOffset(); currentRect = visualRect(index); currentRect.adjust(dx, dy, dx, dy); - rectToUpdate = rectToUpdate.united(currentRect); + if (currentRect.intersects(listView->viewport()->rect())) + { + rectToUpdate = rectToUpdate.united(currentRect); + } } listView->viewport()->update(lastDraggedItemsRect); |
