X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fbufferviewfilter.cpp;h=75059075249dae19167779c88179cbd4c34904d7;hb=32b5e6447458a8e6e8074c40988b2d06f327094f;hp=fa2935812ae2daaed717b49e5ad99fa595d34711;hpb=600a5683c1a8e679b7b63a00d5b1211b5b9771c7;p=quassel.git diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index fa293581..75059075 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -144,9 +144,11 @@ void BufferViewFilter::removeBuffer(const QModelIndex &index) { bool BufferViewFilter::filterAcceptBuffer(const QModelIndex &source_bufferIndex) const { + BufferId bufferId = sourceModel()->data(source_bufferIndex, NetworkModel::BufferIdRole).value(); + Q_ASSERT(bufferId.isValid()); if(!_config) return true; - + if(config()->networkId().isValid() && config()->networkId() != sourceModel()->data(source_bufferIndex, NetworkModel::NetworkIdRole).value()) return false; @@ -157,11 +159,10 @@ bool BufferViewFilter::filterAcceptBuffer(const QModelIndex &source_bufferIndex) return false; if(_config->minimumActivity() > source_bufferIndex.data(NetworkModel::BufferActivityRole).toInt()) { - if(!Client::bufferModel()->standardSelectionModel()->isSelected(source_bufferIndex)) + if(bufferId != Client::bufferModel()->standardSelectionModel()->currentIndex().data(NetworkModel::BufferIdRole).value()) return false; } - BufferId bufferId = sourceModel()->data(source_bufferIndex, NetworkModel::BufferIdRole).value(); return _config->bufferList().contains(bufferId); } @@ -184,7 +185,7 @@ bool BufferViewFilter::filterAcceptsRow(int source_row, const QModelIndex &sourc return false; } - if(source_parent == QModelIndex()) + if(!source_parent.isValid()) return filterAcceptNetwork(child); else return filterAcceptBuffer(child); @@ -253,14 +254,16 @@ QVariant BufferViewFilter::foreground(const QModelIndex &index) const { } void BufferViewFilter::source_rowsInserted(const QModelIndex &parent, int start, int end) { - if(parent.data(NetworkModel::ItemTypeRole) != NetworkModel::NetworkItemType) + if(parent.data(NetworkModel::ItemTypeRole) != NetworkModel::BufferItemType) return; if(!config() || !config()->addNewBuffersAutomatically()) return; + QModelIndex child; for(int row = start; row <= end; row++) { - addBuffer(parent.child(row, 0).data(NetworkModel::BufferIdRole).value()); + child = sourceModel()->index(row, 0, parent); + addBuffer(sourceModel()->data(child, NetworkModel::BufferIdRole).value()); } }