]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Boost group selections and remove unnecessary stuff.
authorRafael Fernández López <ereslibre@kde.org>
Tue, 26 Jun 2007 20:33:21 +0000 (20:33 +0000)
committerRafael Fernández López <ereslibre@kde.org>
Tue, 26 Jun 2007 20:33:21 +0000 (20:33 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=680656

src/klistview.cpp
src/klistview_p.h

index e6ffdc1e0f41538dcd0b1260414c55d66abcd231..821522b78760959afc70a21d22539692d73f16ab 100644 (file)
@@ -547,7 +547,6 @@ void KListView::reset()
     d->elementDictionary.clear();
     d->categoriesIndexes.clear();
     d->categoriesPosition.clear();
-    d->isIndexSelected.clear();       // selection cache
     d->categories.clear();
     d->intersectedIndexes.clear();
     d->sourceModelIndexList.clear();
@@ -816,46 +815,33 @@ void KListView::mouseReleaseEvent(QMouseEvent *event)
     event->accept();
 
     d->mouseButtonPressed = false;
-    d->lastSelection = selectionModel()->selection();
 
     QPoint initialPressPosition = viewport()->mapFromGlobal(QCursor::pos());
     initialPressPosition.setY(initialPressPosition.y() + verticalOffset());
     initialPressPosition.setX(initialPressPosition.x() + horizontalOffset());
 
+    QItemSelection selection;
+
     if (initialPressPosition == d->initialPressPosition)
     {
-        QItemSelection selection;
         foreach(const QString &category, d->categories)
         {
             if (d->categoryVisualRect(category).contains(event->pos()))
             {
-                QModelIndex index;
-                foreach (const QModelIndex &mappedIndex,
-                         d->categoriesIndexes[category])
-                {
-                    index = d->proxyModel->mapFromSource(mappedIndex);
-
-                    if (d->isIndexSelected.contains(index))
-                    {
-                        if (!d->isIndexSelected[index])
-                            selection.select(index, index);
-
-                        d->isIndexSelected[index] = true;
-                    }
-                    else
-                    {
-                        d->isIndexSelected.insert(index, true);
-                        selection.select(index, index);
-                    }
-                }
-
-                selectionModel()->select(selection, QItemSelectionModel::Toggle);
+                QItemSelectionRange selectionRange(d->proxyModel->mapFromSource(d->categoriesIndexes[category][0]),
+                                                   d->proxyModel->mapFromSource(d->categoriesIndexes[category][d->categoriesIndexes[category].count() - 1]));
+
+                selection << selectionRange;
+
+                selectionModel()->select(selection, QItemSelectionModel::Select);
 
                 break;
             }
         }
     }
 
+    d->lastSelection = selectionModel()->selection();
+
     viewport()->update();
 }
 
@@ -954,7 +940,6 @@ void KListView::rowsInsertedArtifficial(const QModelIndex &parent,
     d->elementDictionary.clear();
     d->categoriesIndexes.clear();
     d->categoriesPosition.clear();
-    d->isIndexSelected.clear();       // selection cache
     d->categories.clear();
     d->intersectedIndexes.clear();
     d->sourceModelIndexList.clear();
index 3c960310f170645a65d0a49ca9c103a9e7e3a176..c0a4289a81e21d35ca82b34fd67b8091aa74eecd 100644 (file)
@@ -135,7 +135,6 @@ public:
     QHash<QString, QRect> categoriesPosition;
     QStringList categories;
     QModelIndexList intersectedIndexes;
-    QHash<QModelIndex, bool> isIndexSelected;            // selection cache
 
     // Attributes for speed reasons
     KSortFilterProxyModel *proxyModel;