From 71680def7f7c9b3e59d4bc93816b87e6131d35da Mon Sep 17 00:00:00 2001 From: Rafael Fernández López Date: Thu, 28 Jun 2007 23:29:47 +0000 Subject: ++optimization svn path=/trunk/KDE/kdebase/apps/; revision=681449 --- src/klistview.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src/klistview.cpp') diff --git a/src/klistview.cpp b/src/klistview.cpp index fa78de638..403e984a2 100644 --- a/src/klistview.cpp +++ b/src/klistview.cpp @@ -409,6 +409,30 @@ void KListView::Private::drawDraggedItems(QPainter *painter) } } +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(); + + currentRect = visualRect(index); + currentRect.adjust(dx, dy, dx, dy); + + rectToUpdate = rectToUpdate.united(currentRect); + } + + listView->viewport()->update(lastDraggedItemsRect); + + lastDraggedItemsRect = rectToUpdate; + + listView->viewport()->update(rectToUpdate); +} + //============================================================================== @@ -890,6 +914,8 @@ void KListView::dragMoveEvent(QDragMoveEvent *event) } d->dragLeftViewport = false; + + d->drawDraggedItems(); } void KListView::dragLeaveEvent(QDragLeaveEvent *event) -- cgit v1.3