Properly handle multiselections in bufferviews, fixes #665
authorManuel Nickschas <sputnick@quassel-irc.org>
Sat, 11 Apr 2009 18:50:12 +0000 (20:50 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Sun, 12 Apr 2009 09:52:09 +0000 (11:52 +0200)
src/uisupport/bufferview.cpp
src/uisupport/networkmodelcontroller.cpp

index 086af0a..28d03a4 100644 (file)
@@ -276,7 +276,9 @@ void BufferView::removeSelectedBuffers(bool permanently) {
       continue;
 
     removedRows << bufferId;
+  }
 
+  foreach(BufferId bufferId, removedRows) {
     if(permanently)
       config()->requestRemoveBufferPermanently(bufferId);
     else
index ef1a020..bc8a427 100644 (file)
@@ -232,11 +232,14 @@ void NetworkModelController::handleBufferAction(ActionType type, QAction *) {
     removeBuffers(indexList());
   } else {
 
+    QList<BufferInfo> bufferList; // create temp list because model indexes might change
     foreach(QModelIndex index, indexList()) {
       BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
-      if(!bufferInfo.isValid())
-        continue;
+      if(bufferInfo.isValid())
+        bufferList << bufferInfo;
+    }
 
+    foreach(BufferInfo bufferInfo, bufferList) {
       switch(type) {
         case BufferJoin:
           Client::userInput(bufferInfo, QString("/JOIN %1").arg(bufferInfo.bufferName()));