X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fbufferviewoverlay.cpp;h=3b49ff91db6a0c23e9e69642ac1a0e2ea545963e;hp=cba8035a7389d7de9a12ef12d99d147e9c00f404;hb=6245a8d29e893eaff25a12b0be2f47b64f0f7bcd;hpb=7fc418e5841a1633f651e08a34ccd2123ba6e0db diff --git a/src/client/bufferviewoverlay.cpp b/src/client/bufferviewoverlay.cpp index cba8035a..3b49ff91 100644 --- a/src/client/bufferviewoverlay.cpp +++ b/src/client/bufferviewoverlay.cpp @@ -32,6 +32,7 @@ const int BufferViewOverlay::_updateEventId = QEvent::registerEventType(); BufferViewOverlay::BufferViewOverlay(QObject *parent) : QObject(parent), _aboutToUpdate(false), + _uninitializedViewCount(0), _addBuffersAutomatically(false), _hideInactiveBuffers(false), _allowedBufferTypes(0), @@ -50,6 +51,7 @@ void BufferViewOverlay::addView(int viewId) { } _bufferViewIds << viewId; + _uninitializedViewCount++; if(config->isInitialized()) { viewInitialized(config); } else { @@ -63,10 +65,28 @@ void BufferViewOverlay::removeView(int viewId) { return; _bufferViewIds.remove(viewId); - BufferViewConfig *config = qobject_cast(sender()); + BufferViewConfig *config = Client::bufferViewManager()->bufferViewConfig(viewId); if(config) disconnect(config, 0, this, 0); + + // update initialized State: + bool wasInitialized = isInitialized(); + _uninitializedViewCount = 0; + QSet::iterator viewIter = _bufferViewIds.begin(); + while(viewIter != _bufferViewIds.end()) { + config = Client::bufferViewManager()->bufferViewConfig(*viewIter); + if(!config) { + viewIter = _bufferViewIds.erase(viewIter); + } else { + if(!config->isInitialized()) + _uninitializedViewCount++; + viewIter++; + } + } + update(); + if(!wasInitialized && isInitialized()) + emit initDone(); } void BufferViewOverlay::viewInitialized(BufferViewConfig *config) { @@ -90,6 +110,10 @@ void BufferViewOverlay::viewInitialized(BufferViewConfig *config) { // check if the view was removed in the meantime... if(_bufferViewIds.contains(config->bufferViewId())) update(); + + _uninitializedViewCount--; + if(isInitialized()) + emit initDone(); } void BufferViewOverlay::viewInitialized() {