Fixing BR # 204 - double click on the sender column in the chatmonitor to switch...
[quassel.git] / src / client / networkmodel.cpp
index dbfa6f0..777e809 100644 (file)
@@ -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<BufferId>());
   }
 }
 
 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<BufferId>()] = static_cast<BufferItem *>(child.internalPointer());
   }