X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/82908b442ba437cdff200e319f6db20f7a6cd65a..5735251bbb28e6d96f3e43abd9302efc28d6829e:/src/dolphindetailsview.cpp diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp index 0af2744b4..c9d6af6a9 100644 --- a/src/dolphindetailsview.cpp +++ b/src/dolphindetailsview.cpp @@ -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;