X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclientbufferviewmanager.cpp;fp=src%2Fclient%2Fclientbufferviewmanager.cpp;h=d7cd837fc2aa3aa8a3b39d4e6b57a319f731e8e6;hp=6682caa73cda9b70376c7d47da23073c27e29849;hb=92f256c9ef102ef5af61164bb17b63e501510541;hpb=21e31fe43c4577cad271b070e4df4906ead128d8 diff --git a/src/client/clientbufferviewmanager.cpp b/src/client/clientbufferviewmanager.cpp index 6682caa7..d7cd837f 100644 --- a/src/client/clientbufferviewmanager.cpp +++ b/src/client/clientbufferviewmanager.cpp @@ -26,6 +26,7 @@ ClientBufferViewManager::ClientBufferViewManager(SignalProxy *proxy, QObject *parent) : BufferViewManager(proxy, parent) { + connect(this, SIGNAL(initDone()), this, SLOT(waitForConfigInit())); } BufferViewConfig *ClientBufferViewManager::bufferViewConfigFactory(int bufferViewConfigId) { @@ -43,3 +44,28 @@ QList ClientBufferViewManager::clientBufferViewConfigs ClientBufferViewConfig *ClientBufferViewManager::clientBufferViewConfig(int bufferViewId) const { return static_cast(bufferViewConfig(bufferViewId)); } + +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(); +}