- Fixed "ghost-buffers" appearing in the network view
[quassel.git] / src / client / client.cpp
index b9515e7..a2988ed 100644 (file)
@@ -161,6 +161,10 @@ Buffer *Client::buffer(BufferInfo bufferInfo) {
            client, SLOT(bufferDestroyed()));
     client->_buffers[bufferInfo.bufferId()] = buff;
     emit client->bufferUpdated(bufferInfo);
+
+    // I don't like this: but currently there isn't really a prettier way:
+    QModelIndex bufferIdx = networkModel()->bufferIndex(bufferInfo.bufferId());
+    bufferModel()->setCurrentIndex(bufferModel()->mapFromSource(bufferIdx));
   }
   Q_ASSERT(buff);
   return buff;
@@ -464,13 +468,16 @@ void Client::setBufferLastSeen(BufferId id, const QDateTime &lastSeen) {
   bufferSyncer()->requestSetLastSeen(id, lastSeen);
 }
 
+void Client::removeBuffer(BufferId id) {
+  if(!bufferSyncer()) return;
+  bufferSyncer()->requestRemoveBuffer(id);
+}
+
 void Client::bufferRemoved(BufferId bufferId) {
   QModelIndex current = bufferModel()->currentIndex();
   if(current.data(NetworkModel::BufferIdRole).value<BufferId>() == bufferId) {
     // select the status buffer if the currently displayed buffer is about to be removed
-    QModelIndex newCurrent = current.sibling(0,0);
-    bufferModel()->standardSelectionModel()->setCurrentIndex(newCurrent, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
-    bufferModel()->standardSelectionModel()->select(newCurrent, QItemSelectionModel::ClearAndSelect);
+    bufferModel()->setCurrentIndex(current.sibling(0,0));
   }
     
   networkModel()->removeBuffer(bufferId);