]> cloud.milkyroute.net Git - dolphin.git/commitdiff
performance improvement when selecting items
authorPeter Penz <peter.penz19@gmail.com>
Fri, 24 Oct 2008 17:57:10 +0000 (17:57 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Fri, 24 Oct 2008 17:57:10 +0000 (17:57 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=875518

src/dolphindetailsview.cpp

index ffddb29c14d4d74f6a7582795dd41c3560c31843..501108c012419b27a3591b9de15e86608a9460a7 100644 (file)
@@ -474,8 +474,8 @@ void DolphinDetailsView::setSelection(const QRect &rect, QItemSelectionModel::Se
         // Choose a sensible startIndex - a parentless index in the 
         // name column, as close to the top of the rect as we 
         // can find.
-        QRect normalisedRect = rect.normalized();
-        QModelIndex startIndex = QTreeView::indexAt(normalisedRect.topLeft());
+        const QRect normalizedRect = rect.normalized();
+        QModelIndex startIndex = QTreeView::indexAt(normalizedRect.topLeft());
         if (startIndex.isValid()) {
             while (startIndex.parent().isValid()) {
                 startIndex = startIndex.parent();
@@ -486,7 +486,7 @@ void DolphinDetailsView::setSelection(const QRect &rect, QItemSelectionModel::Se
         }
         startIndex = model()->index(startIndex.row(), KDirModel::Name);
         clearSelection();
-        setSelectionRecursive(startIndex, normalisedRect, command);
+        setSelectionRecursive(startIndex, normalizedRect, command);
     }
 }
 
@@ -754,6 +754,7 @@ void DolphinDetailsView::setSelectionRecursive(const QModelIndex& startIndex,
         return;
     }
     
+    QItemSelection selection;
     // rect is assumed to be in viewport coordinates and normalized.
     // Move down through the siblings of startIndex, exploring the children
     // of any expanded nodes.
@@ -770,18 +771,19 @@ void DolphinDetailsView::setSelectionRecursive(const QModelIndex& startIndex,
             }
         }
 
-        QRect itemContentRect = nameColumnRect(currIndex);
+        const QRect itemContentRect = nameColumnRect(currIndex);
         if (itemContentRect.top() > rect.bottom()) {
             // All remaining items will be below itemContentRect, so we may cull.
-            return;
+            break;
         }
 
         if (itemContentRect.intersects(rect)) {
-            selectionModel()->select(currIndex, QItemSelectionModel::Select);   
+            selection.select(currIndex, currIndex);
         }
 
         currIndex = belowIndex;
     } while (currIndex.isValid());
+    selectionModel()->select(selection,  QItemSelectionModel::Select);
 }
 
 #include "dolphindetailsview.moc"