]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphindetailsview.cpp
improved drag & drop support for Ark
[dolphin.git] / src / dolphindetailsview.cpp
index 0af2744b4e49930f60b952a8a16bebd8769f1b0f..c9d6af6a9e1866b13e5c4259740c96194a1076f0 100644 (file)
@@ -652,23 +652,19 @@ void DolphinDetailsView::updateElasticBandSelection()
     if (!m_band.ignoreOldInfo) {
         // Do some quick checks to see if we can rule out the need to
         // update the selection.
-        bool coveringSameRows = true; 
         Q_ASSERT(uniformRowHeights());
         QModelIndex dummyIndex = model()->index(0, 0);        
         if (!dummyIndex.isValid()) {
             // No items in the model presumably.
             return;
         }
-        const int rowHeight = QTreeView::rowHeight(dummyIndex);
         
         // If the elastic band does not cover the same rows as before, we'll
         // need to re-check, and also invalidate the old item distances.
-        if (selRect.top() / rowHeight != m_band.oldSelectionRect.top() / rowHeight) {
-            coveringSameRows = false;
-        } else if (selRect.bottom() / rowHeight != m_band.oldSelectionRect.bottom() / rowHeight) {
-            coveringSameRows = false;
-        }
-        
+        const int rowHeight = QTreeView::rowHeight(dummyIndex);
+        const bool coveringSameRows =
+            (selRect.top()    / rowHeight == m_band.oldSelectionRect.top()    / rowHeight) &&
+            (selRect.bottom() / rowHeight == m_band.oldSelectionRect.bottom() / rowHeight);
         if (coveringSameRows) {
             // Covering the same rows, but have we moved far enough horizontally 
             // that we might have (de)selected some other items?
@@ -728,7 +724,7 @@ void DolphinDetailsView::updateElasticBandSelection()
    QModelIndex toggleIndexRangeBegin = QModelIndex();
 
    do {
-       QRect currIndexRect = visualRect(currIndex);
+       QRect currIndexRect = visualRect(currIndex).intersect(nameColumnRect);
        const QString name = m_controller->itemForIndex(currIndex).name();
        currIndexRect.setWidth(DolphinFileItemDelegate::nameColumnWidth(name, viewOptions()));
 
@@ -776,7 +772,7 @@ void DolphinDetailsView::updateElasticBandSelection()
        lastIndex = currIndex;
        currIndex = nextIndex;
     } while (!allItemsInBoundDone);
-    
+
     selectionModel()->select(itemsToToggle, QItemSelectionModel::Toggle);
 
     m_band.oldSelectionRect = selRect;