From: Manuel Nickschas Date: Sat, 11 Apr 2009 18:50:12 +0000 (+0200) Subject: Properly handle multiselections in bufferviews, fixes #665 X-Git-Tag: 0.5-rc1~227 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=13c01e14bae617bed0de9507f33f77e76ba5dc9f;ds=sidebyside Properly handle multiselections in bufferviews, fixes #665 --- diff --git a/src/uisupport/bufferview.cpp b/src/uisupport/bufferview.cpp index 4111ad3a..26ddf00e 100644 --- a/src/uisupport/bufferview.cpp +++ b/src/uisupport/bufferview.cpp @@ -276,7 +276,9 @@ void BufferView::removeSelectedBuffers(bool permanently) { continue; removedRows << bufferId; + } + foreach(BufferId bufferId, removedRows) { if(permanently) config()->requestRemoveBufferPermanently(bufferId); else diff --git a/src/uisupport/networkmodelcontroller.cpp b/src/uisupport/networkmodelcontroller.cpp index ef1a020f..bc8a4276 100644 --- a/src/uisupport/networkmodelcontroller.cpp +++ b/src/uisupport/networkmodelcontroller.cpp @@ -232,11 +232,14 @@ void NetworkModelController::handleBufferAction(ActionType type, QAction *) { removeBuffers(indexList()); } else { + QList bufferList; // create temp list because model indexes might change foreach(QModelIndex index, indexList()) { BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value(); - 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()));