treat each channelView with its filter as its own

This commit is contained in:
unknown 2024-10-26 13:38:38 +02:00
parent 7844a3b91f
commit 55c0e6980f
3 changed files with 14 additions and 5 deletions

View file

@ -180,7 +180,7 @@ public:
LimitedQueueSnapshot<MessageLayoutPtr> &getMessagesSnapshot();
// Returns true if message should be included
bool shouldIncludeMessage(const MessagePtr &m) const;
bool shouldIncludeMessage(const MessagePtr &message) const;
void queueLayout();
void invalidateBuffers();
@ -216,6 +216,11 @@ public:
Scrollbar *scrollbar();
using ChannelViewID = std::size_t;
///
/// \brief Get the ID of this ChannelView
///
/// The ID is made of the underlying channel's name
/// combined with the filter set IDs
ChannelViewID getID() const;
pajlada::Signals::Signal<QMouseEvent *> mouseDown;

View file

@ -597,11 +597,10 @@ bool NotebookTab::shouldMessageHighlight(const ChannelView &channelViewSource,
const auto &visibleSplits = visibleSplitContainer->getSplits();
for (const auto &visibleSplit : visibleSplits)
{
if (channelViewSource.underlyingChannel() ==
visibleSplit->getChannel() &&
if (channelViewSource.getID() ==
visibleSplit->getChannelView().getID() &&
visibleSplit->getChannelView().shouldIncludeMessage(message) &&
channelViewSource.shouldIncludeMessage(message) &&
channelViewSource.getFilterIds().empty())
channelViewSource.shouldIncludeMessage(message))
{
return false;
}

View file

@ -126,6 +126,11 @@ private:
const MessagePtr &message) const;
struct HighlightSources {
// Source of the update to the highlight status is the split
// in which a message that causes the update appears.
// This message can be just a plain message causing the
// HighlightState::NewMessage state, or a message that pings the user
// causing the HighlightState::Highlighted state
std::unordered_set<ChannelView::ChannelViewID> newMessageSource;
std::unordered_set<ChannelView::ChannelViewID> highlightedSource;