X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fclient%2Fclientbufferviewmanager.cpp;h=d7cd837fc2aa3aa8a3b39d4e6b57a319f731e8e6;hb=8aa25a7c1526915741a7da989cc0a663bd84eb31;hp=06e8a852a445b6985ce8de24e96c055616663943;hpb=f48d855945219c3a1897a17bf15830dfee104f0b;p=quassel.git diff --git a/src/client/clientbufferviewmanager.cpp b/src/client/clientbufferviewmanager.cpp index 06e8a852..d7cd837f 100644 --- a/src/client/clientbufferviewmanager.cpp +++ b/src/client/clientbufferviewmanager.cpp @@ -20,14 +20,13 @@ #include "clientbufferviewmanager.h" +#include "bufferviewoverlay.h" #include "clientbufferviewconfig.h" ClientBufferViewManager::ClientBufferViewManager(SignalProxy *proxy, QObject *parent) - : BufferViewManager(proxy, parent), - _bufferViewOverlay(0) + : BufferViewManager(proxy, parent) { - connect(this, SIGNAL(bufferViewConfigAdded(int)), this, SLOT(updateBufferViewOverlay())); - connect(this, SIGNAL(bufferViewConfigDeleted(int)), this, SLOT(updateBufferViewOverlay())); + connect(this, SIGNAL(initDone()), this, SLOT(waitForConfigInit())); } BufferViewConfig *ClientBufferViewManager::bufferViewConfigFactory(int bufferViewConfigId) { @@ -46,6 +45,27 @@ ClientBufferViewConfig *ClientBufferViewManager::clientBufferViewConfig(int buff return static_cast(bufferViewConfig(bufferViewId)); } -void ClientBufferViewManager::updateBufferViewOverlay() { - +void ClientBufferViewManager::waitForConfigInit() { + bool initialized = true; + foreach(BufferViewConfig *config, bufferViewConfigs()) { + initialized &= config->isInitialized(); + if(config->isInitialized()) + continue; + connect(config, SIGNAL(initDone()), this, SLOT(configInitBarrier())); + } + if(initialized) + emit viewsInitialized(); +} + +void ClientBufferViewManager::configInitBarrier() { + BufferViewConfig *config = qobject_cast(sender()); + Q_ASSERT(config); + disconnect(config, SIGNAL(initDone()), this, SLOT(configInitBarrier())); + + bool initialized = true; + foreach(BufferViewConfig *config, bufferViewConfigs()) { + initialized &= config->isInitialized(); + } + if(initialized) + emit viewsInitialized(); }