]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Improve speed when we have lots of selections that are partially outside the viewport.
authorRafael Fernández López <ereslibre@kde.org>
Sun, 1 Jul 2007 17:09:47 +0000 (17:09 +0000)
committerRafael Fernández López <ereslibre@kde.org>
Sun, 1 Jul 2007 17:09:47 +0000 (17:09 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=682114

src/klistview.cpp

index 1e9e1b013f0393dcaba2d03c3a41408923743511..e3ea89e4163a32158ccc028f9c5d438db1111d1f 100644 (file)
@@ -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);