diff options
| author | Danilo M. <danix@danix.xyz> | 2026-08-10 08:28:22 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-08-10 08:28:22 +0200 |
| commit | 2d062241732f7396e8cb12295962d3f3e5c1a2b0 (patch) | |
| tree | 6dfb0655d5b32d4457bd5bf508a844da7b57736a /src/threadlistmodel.h | |
| parent | 1335d3c7f891a22f61307d2d186483f56e8e558c (diff) | |
| download | qtmaildir-2d062241732f7396e8cb12295962d3f3e5c1a2b0.tar.gz qtmaildir-2d062241732f7396e8cb12295962d3f3e5c1a2b0.zip | |
feat(model): expose the tags a reply has and its thread does not
A reply card shows only these. The alternative, a reply's full tag set, was
rejected on measurement rather than taste: in the user's database 7 of 48691
messages carry unread and 75 carry flagged, both already drawn another way, and
every other tag is applied per thread and identical on all its messages. Full
sets would repeat the thread's chips down the whole expansion, which is the
striping the row-wide strip was built to avoid.
Diffstat (limited to 'src/threadlistmodel.h')
| -rw-r--r-- | src/threadlistmodel.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/threadlistmodel.h b/src/threadlistmodel.h index b80488b..b13165c 100644 --- a/src/threadlistmodel.h +++ b/src/threadlistmodel.h @@ -103,6 +103,26 @@ public: /// delegate cannot call hasChildren without the model, and the same /// answer has to reach the cell that reserves room for the glyph. HasRepliesRole, + + /// The tags this MESSAGE carries that its thread does not. + /// + /// A reply card shows these and nothing else. Showing a reply's full + /// tag set instead was measured against the user's own database and + /// rejected: of 48691 messages, 7 carry `unread` and 75 carry + /// `flagged`, and both are already drawn another way (the sender's + /// weight, and the mark on line 2). Every other tag is applied to a + /// whole thread and is identical on all its messages, so full sets + /// would repeat the thread's own chips down the entire expansion, + /// which is the striping the old row-wide strip existed to avoid. + /// + /// Empty on a thread row, which has no thread to differ from. + MessageOwnTagsRole, + + /// The colours for MessageOwnTagsRole, in the same order. Supplied by + /// the model for the same reason as PillColoursRole: it owns the + /// TagColors instance, and a delegate reading config itself would be a + /// second source of truth. + MessageOwnColoursRole, }; /// Row fill for a thread tagged `deleted`, and for one tagged `spam`. |
