last fix for buffer removal (fingers crossed). It is strongly discouraged to use...
[quassel.git] / src / client / client.cpp
index d57678d..be2c894 100644 (file)
@@ -464,6 +464,14 @@ void Client::setBufferLastSeen(BufferId id, const QDateTime &lastSeen) {
 }
 
 void Client::bufferRemoved(BufferId bufferId) {
 }
 
 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);
+  }
+    
   networkModel()->removeBuffer(bufferId);
   if(_buffers.contains(bufferId)) {
     Buffer *buff = _buffers.take(bufferId);
   networkModel()->removeBuffer(bufferId);
   if(_buffers.contains(bufferId)) {
     Buffer *buff = _buffers.take(bufferId);