summaryrefslogtreecommitdiffstats
path: root/src/threadlistmodel.h
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-08-14 20:06:08 +0200
committerDanilo M. <danix@danix.xyz>2026-08-14 20:06:08 +0200
commit4a4849421ddac044212cd0e17f9aee8ff2606292 (patch)
treebedfb35f370b637eedcb3cd4d24be8ac75b257b5 /src/threadlistmodel.h
parentbde7409ef817089298718376e46a57b2d303cf02 (diff)
downloadqtmaildir-4a4849421ddac044212cd0e17f9aee8ff2606292.tar.gz
qtmaildir-4a4849421ddac044212cd0e17f9aee8ff2606292.zip
Revert the message-scoped auto mark-read
Reverts bde7409 and 66f1159. The user hit the worst possible symptom: clicking one message marked a DIFFERENT, unrelated message read. The cause is in markCurrentThreadRead, which reads m_model->threadAt(current.row()). CLAUDE.md records this exact trap: a tree numbers rows PER PARENT, so a reply's row() indexes its siblings and threadAt() on it answers about an unrelated thread near the top of the list. The guards then compared the right ids against the wrong thread and let a write through for whatever message the timer's state named. That fault predates these commits, but they made it reachable and harmful: while the write was thread-scoped the mismatch was mostly masked, and scoping it to a single message turned it into "a random message is now read". Reverting rather than fixing forward. Marking the wrong mail read syncs out to the server and cannot be undone from here, so the safe state is the previous behaviour, which is too broad but predictable. The item 66 work in 4a4f82f stands: a thread root still renders one message. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'src/threadlistmodel.h')
-rw-r--r--src/threadlistmodel.h17
1 files changed, 0 insertions, 17 deletions
diff --git a/src/threadlistmodel.h b/src/threadlistmodel.h
index f7abaf8..2b8d2b0 100644
--- a/src/threadlistmodel.h
+++ b/src/threadlistmodel.h
@@ -273,23 +273,6 @@ public:
void applyTagChange(const QString &threadId, const QStringList &added,
const QStringList &removed);
- /// The same, scoped to ONE message.
- ///
- /// Updates that message's own tags wherever it is held: as a child row if
- /// the thread is expanded, and as `first` when it is the thread's opening
- /// message. The thread's summary tags follow only when the change is
- /// unambiguous for the whole thread, which for `unread` means no other
- /// message still carries it, since a thread reads as unread while any of
- /// its messages does.
- ///
- /// Exists because auto mark-read touches one message and the card still
- /// has to stop looking unread. applyTagChange() above cannot serve that:
- /// it rewrites the thread's tags directly, which for a multi-message
- /// thread would claim every reply had been read.
- void applyMessageTagChange(const QString &messageId,
- const QStringList &added,
- const QStringList &removed);
-
private:
/// One thread root and the message rows expanded under it.
///