X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fbufferviewfilter.cpp;h=687cd801a6b39fd9319de47486ed69310fa0e0f1;hp=d3a1b52160f6384a36e275a8b0227b3116a6f320;hb=34a9a0d412b1acc4234ebc316fa4586e006b91bf;hpb=2a92703a6941fb7aa85f5876c51b360878475f01 diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index d3a1b521..687cd801 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -24,6 +24,7 @@ #include #include +#include "bufferinfo.h" #include "buffermodel.h" #include "client.h" #include "networkmodel.h" @@ -202,7 +203,7 @@ bool BufferViewFilter::filterAcceptBuffer(const QModelIndex &source_bufferIndex) // add the buffer if... if(config()->isInitialized() && !config()->removedBuffers().contains(bufferId) // it hasn't been manually removed and either && ((config()->addNewBuffersAutomatically() && !config()->temporarilyRemovedBuffers().contains(bufferId)) // is totally unknown to us (a new buffer)... - || (config()->temporarilyRemovedBuffers().contains(bufferId) && activityLevel > Buffer::OtherActivity))) { // or was just temporarily hidden and has a new message waiting for us. + || (config()->temporarilyRemovedBuffers().contains(bufferId) && activityLevel > BufferInfo::OtherActivity))) { // or was just temporarily hidden and has a new message waiting for us. addBuffer(bufferId); } // note: adding the buffer to the valid list does not temper with the following filters ("show only channels" and stuff) @@ -215,13 +216,15 @@ bool BufferViewFilter::filterAcceptBuffer(const QModelIndex &source_bufferIndex) if(!(config()->allowedBufferTypes() & (BufferInfo::Type)source_bufferIndex.data(NetworkModel::BufferTypeRole).toInt())) return false; - if(config()->hideInactiveBuffers() && !source_bufferIndex.data(NetworkModel::ItemActiveRole).toBool()) + // the following dynamic filters may not trigger if the buffer is currently selected. + if(bufferId == Client::bufferModel()->standardSelectionModel()->currentIndex().data(NetworkModel::BufferIdRole).value()) + return true; + + if(config()->hideInactiveBuffers() && !source_bufferIndex.data(NetworkModel::ItemActiveRole).toBool() && activityLevel <= BufferInfo::OtherActivity) return false; - if(config()->minimumActivity() > activityLevel) { - if(bufferId != Client::bufferModel()->standardSelectionModel()->currentIndex().data(NetworkModel::BufferIdRole).value()) - return false; - } + if(config()->minimumActivity() > activityLevel) + return false; return true; } @@ -301,18 +304,18 @@ QVariant BufferViewFilter::data(const QModelIndex &index, int role) const { } QVariant BufferViewFilter::foreground(const QModelIndex &index) const { - if(!index.data(NetworkModel::ItemActiveRole).toBool()) - return _FgColorInactiveActivity; - - Buffer::ActivityLevel activity = (Buffer::ActivityLevel)index.data(NetworkModel::BufferActivityRole).toInt(); + BufferInfo::ActivityLevel activity = (BufferInfo::ActivityLevel)index.data(NetworkModel::BufferActivityRole).toInt(); - if(activity & Buffer::Highlight) + if(activity & BufferInfo::Highlight) return _FgColorHighlightActivity; - if(activity & Buffer::NewMessage) + if(activity & BufferInfo::NewMessage) return _FgColorNewMessageActivity; - if(activity & Buffer::OtherActivity) + if(activity & BufferInfo::OtherActivity) return _FgColorOtherActivity; + if(!index.data(NetworkModel::ItemActiveRole).toBool()) + return _FgColorInactiveActivity; + return _FgColorNoActivity; }