X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fnetworkmodel.cpp;h=777e809a6a8ec079ddd03b7fe3598975a9d43a95;hp=dbfa6f0c47da26e2eee4fa0db3709a7ab42d78fe;hb=3e85aa859e7533ec910f8b2efe4a8abd801d3a47;hpb=761a147545864782a79570dbaf8f4cc25de7423d diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index dbfa6f0c..777e809a 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -774,11 +774,10 @@ void NetworkModel::networkRemoved(const NetworkId &networkId) { } QModelIndex NetworkModel::bufferIndex(BufferId bufferId) { - BufferItem *bufferItem = findBufferItem(bufferId); - if(bufferItem) - return indexByItem(bufferItem); - else + if(!_bufferItemCache.contains(bufferId)) return QModelIndex(); + + return indexByItem(_bufferItemCache[bufferId]); } BufferItem *NetworkModel::findBufferItem(const BufferInfo &bufferInfo) { @@ -958,19 +957,19 @@ const Network *NetworkModel::networkByIndex(const QModelIndex &index) const { void NetworkModel::checkForRemovedBuffers(const QModelIndex &parent, int start, int end) { - if(parent.data(ItemTypeRole) == NetworkItemType) + if(parent.data(ItemTypeRole) != NetworkItemType) return; - for(int row = start; row < end; row++) { + for(int row = start; row <= end; row++) { _bufferItemCache.remove(parent.child(row, 0).data(BufferIdRole).value()); } } void NetworkModel::checkForNewBuffers(const QModelIndex &parent, int start, int end) { - if(parent.data(ItemTypeRole) == NetworkItemType) + if(parent.data(ItemTypeRole) != NetworkItemType) return; - - for(int row = start; row < end; row++) { + + for(int row = start; row <= end; row++) { QModelIndex child = parent.child(row, 0); _bufferItemCache[child.data(BufferIdRole).value()] = static_cast(child.internalPointer()); }