From: Marcus Eggenberger Date: Tue, 17 Mar 2009 18:29:28 +0000 (+0100) Subject: pruning BufferViewOverlay from stray bufferids in single network views X-Git-Tag: 0.5-rc1~250^2~2 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=27b9b5de238731138578ddef6c1d7de968b7ace7 pruning BufferViewOverlay from stray bufferids in single network views --- diff --git a/src/client/bufferviewoverlay.cpp b/src/client/bufferviewoverlay.cpp index 4ec41239..66dec133 100644 --- a/src/client/bufferviewoverlay.cpp +++ b/src/client/bufferviewoverlay.cpp @@ -22,9 +22,10 @@ #include -#include "client.h" #include "bufferviewconfig.h" +#include "client.h" #include "clientbufferviewmanager.h" +#include "networkmodel.h" const int BufferViewOverlay::_updateEventId = QEvent::registerEventType(); @@ -125,9 +126,28 @@ void BufferViewOverlay::updateHelper() { config = Client::bufferViewManager()->bufferViewConfig(*viewIter); if(!config) continue; + networkIds << config->networkId(); - buffers += config->bufferList().toSet(); - tempRemovedBuffers += config->temporarilyRemovedBuffers(); + if(config->networkId().isValid()) { + NetworkId networkId = config->networkId(); + // we have to filter out all the buffers that don't belong to this net... :/ + QSet bufferIds; + foreach(BufferId bufferId, config->bufferList()) { + if(Client::networkModel()->networkId(bufferId) == networkId) + bufferIds << bufferId; + } + buffers += bufferIds; + + bufferIds.clear(); + foreach(BufferId bufferId, config->temporarilyRemovedBuffers()) { + if(Client::networkModel()->networkId(bufferId) == networkId) + bufferIds << bufferId; + } + tempRemovedBuffers += bufferIds; + } else { + buffers += config->bufferList().toSet(); + tempRemovedBuffers += config->temporarilyRemovedBuffers(); + } // in the overlay a buffer is removed it is removed from all views if(removedBuffers.isEmpty())