Fixing BR #147. Needs core update.
[quassel.git] / src / core / coresession.cpp
index f868379..07ba5a1 100644 (file)
@@ -29,6 +29,7 @@
 #include "buffersyncer.h"
 #include "corebacklogmanager.h"
 #include "corebufferviewmanager.h"
+#include "coreirclisthelper.h"
 #include "storage.h"
 
 #include "corenetwork.h"
@@ -46,6 +47,7 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent)
     _bufferSyncer(new BufferSyncer(this)),
     _backlogManager(new CoreBacklogManager(this)),
     _bufferViewManager(new CoreBufferViewManager(_signalProxy, this)),
+    _ircListHelper(new CoreIrcListHelper(this)),
     scriptEngine(new QScriptEngine(this))
 {
 
@@ -87,7 +89,10 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent)
 
   // init BacklogManager;
   p->synchronize(_backlogManager);
-    
+
+  // init IrcListHelper;
+  p->synchronize(ircListHelper());
+  
   // Restore session state
   if(restoreState) restoreSessionState();
 
@@ -453,8 +458,12 @@ void CoreSession::destroyNetwork(NetworkId id) {
     // this can happen if the network was reconnecting while being removed
     _connections.take(id)->deleteLater();
   }
+  QList<BufferId> removedBuffers = Core::requestBufferIdsForNetwork(user(), id);
   Network *net = _networks.take(id);
   if(net && Core::removeNetwork(user(), id)) {
+    foreach(BufferId bufferId, removedBuffers) {
+      _bufferSyncer->removeBuffer(bufferId);
+    }
     emit networkRemoved(id);
     net->deleteLater();
   }