X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fclient%2Fclientbufferviewmanager.cpp;h=315c2a8e03c44c3f41fe39fe980a050d0aa3db51;hb=0a1c1ff4f99a7eb53ff6cdd95ce5d7ac263e77d2;hp=6682caa73cda9b70376c7d47da23073c27e29849;hpb=21e31fe43c4577cad271b070e4df4906ead128d8;p=quassel.git diff --git a/src/client/clientbufferviewmanager.cpp b/src/client/clientbufferviewmanager.cpp index 6682caa7..315c2a8e 100644 --- a/src/client/clientbufferviewmanager.cpp +++ b/src/client/clientbufferviewmanager.cpp @@ -20,12 +20,12 @@ #include "clientbufferviewmanager.h" -#include "bufferviewoverlay.h" #include "clientbufferviewconfig.h" ClientBufferViewManager::ClientBufferViewManager(SignalProxy *proxy, QObject *parent) : BufferViewManager(proxy, parent) { + connect(this, SIGNAL(initDone()), this, SLOT(waitForConfigInit())); } BufferViewConfig *ClientBufferViewManager::bufferViewConfigFactory(int bufferViewConfigId) { @@ -43,3 +43,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) + QMetaObject::invokeMethod(this, "viewsInitialized", Qt::QueuedConnection); +} + +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) + QMetaObject::invokeMethod(this, "viewsInitialized", Qt::QueuedConnection); +}