]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphindetailsview.cpp
Fix a very obscure previews-in-tooltip bug.
[dolphin.git] / src / dolphindetailsview.cpp
index 0af2744b4e49930f60b952a8a16bebd8769f1b0f..6563cb6586b3ff7da7c26f3a2d88edd6f0021e18 100644 (file)
@@ -646,29 +646,26 @@ void DolphinDetailsView::updateElasticBandSelection()
 
     if (selRect.isNull()) {
         clearSelection();
+        m_band.ignoreOldInfo = true;
         return;
     }
 
     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?
@@ -681,7 +678,7 @@ void DolphinDetailsView::updateElasticBandSelection()
                 ((selRect.right() < oldSelRect.right()) &&
                  (selRect.left() >= m_band.insideNearestRightEdge)) ||
                 ((selRect.right() > oldSelRect.right()) &&
-                 (selRect.right() >= m_band.outsideNearestRightEdge)); 
+                 (selRect.right() >= m_band.outsideNearestRightEdge));
 
             if (!itemSelectionChanged) {
                 return;
@@ -690,7 +687,7 @@ void DolphinDetailsView::updateElasticBandSelection()
     }
 
     // Do the selection from scratch. Force a update of the horizontal distances info.
-    m_band.insideNearestLeftEdge   = nameColumnX + nameColumnWidth + 1;;
+    m_band.insideNearestLeftEdge   = nameColumnX + nameColumnWidth + 1;
     m_band.insideNearestRightEdge  = nameColumnX - 1;
     m_band.outsideNearestLeftEdge  = nameColumnX - 1;
     m_band.outsideNearestRightEdge = nameColumnX + nameColumnWidth + 1;
@@ -737,7 +734,7 @@ void DolphinDetailsView::updateElasticBandSelection()
        const int cl = currIndexRect.left();
        const int sl = selRect.left();
        const int sr = selRect.right();
-        // "The right edge of the name is outside of the rect but nearer than m_outsideNearestLeft", etc      
+       // "The right edge of the name is outside of the rect but nearer than m_outsideNearestLeft", etc      
        if ((cr < sl && cr > m_band.outsideNearestLeftEdge)) {
            m_band.outsideNearestLeftEdge = cr;
        }
@@ -750,7 +747,7 @@ void DolphinDetailsView::updateElasticBandSelection()
        if ((cr >= sl && cr <= sr && cr < m_band.insideNearestLeftEdge)) {
            m_band.insideNearestLeftEdge = cr;
        }
-  
+
        bool currentlySelected = selectionModel()->isSelected(currIndex);
        bool intersectsSelectedRect = currIndexRect.intersects(selRect);
        bool needToToggleItem = (currentlySelected && !intersectsSelectedRect) || (!currentlySelected && intersectsSelectedRect);
@@ -776,7 +773,7 @@ void DolphinDetailsView::updateElasticBandSelection()
        lastIndex = currIndex;
        currIndex = nextIndex;
     } while (!allItemsInBoundDone);
-    
+
     selectionModel()->select(itemsToToggle, QItemSelectionModel::Toggle);
 
     m_band.oldSelectionRect = selRect;