From 20eb3877c4502a0b8ebe770a563066d8c85387ba Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Fri, 28 Aug 2026 11:37:21 +0200 Subject: feat: draw a conversation row's own tags, in one tier Items 110 and 111 reconciled a card that showed one message with a row that was a thread. The row is the conversation now, so the union is simply what it means: the first-message substitution, PillOwnCountRole and the seeded first node all go. --- src/mainwindow.cpp | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) (limited to 'src/mainwindow.cpp') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 231a9a5..b64e20b 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -4058,21 +4058,8 @@ void MainWindow::onMessageLoaded(const QVector &messages, return; // The worker's answer is the authority on what THIS message carries, and - // it is the only place that truth arrives. Until it does, a thread row can - // only offer ThreadSummary::tags, which is notmuch's union over the - // conversation: a four-message thread whose third message is signed makes - // the root card and the pane both claim `signed` for a message that is not - // (item 110). Recording it here corrects the card and gives a - // message-scoped write something to update, which is why marking a root - // message read left the row bold before. - // - // A reply already has its own node from the thread tree, and - // setRootMessageTags ignores anything that is not a root. - for (const MessageRef &ref : messages) - m_model->setRootMessageTags(ref.messageId, ref.tags); - - // The pane follows the same correction. setTags() at selection time can - // only have used the union. + // the pane shows one message. setTags() at selection time can only have + // used the thread's union. if (messages.size() == 1) m_messageView->setTags(messages.first().tags); -- cgit v1.2.3