aboutsummaryrefslogtreecommitdiffstats
path: root/src/busyindicator.h
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-08-28 17:33:31 +0200
committerDanilo M. <danix@danix.xyz>2026-08-28 17:33:31 +0200
commitf934029d3333396bde6ec306ab300641929c7cdc (patch)
treea7384e7569c4d102f489666752b036969751bdb9 /src/busyindicator.h
parentac9a0718d9f071b601cd678485a25b416cf5af44 (diff)
downloadqtmaildir-f934029d3333396bde6ec306ab300641929c7cdc.tar.gz
qtmaildir-f934029d3333396bde6ec306ab300641929c7cdc.zip
feat: treat a mixed conversation's unread state as unread
Item 112 hid the toggle whenever the selection disagreed, because a union is not a state and no honest label existed for it. That was affordable because the "Whole thread" submenu sat beside it carrying two absolute entries, which worked whatever the mix. Item 177 deletes that submenu: the row decides the scope, so a second set of actions is a second answer to a settled question. Hiding the toggle then leaves the commonest conversation in the mailbox with no key at all. The rule is a catch-all instead. Any unread message, a mixed conversation included, reads "Mark thread as read" and marks every message read; only a fully read selection reads "Mark thread as unread". Two presses therefore reach either state from anywhere, which is what makes one key enough. The write direction moves with the label. Computing it from everySelectedRowHasTag() while the label promised "read" would mark a mixed conversation unread, which is the item 112 report happening again from the other end; the mutation putting that back fails the new test. The three-valued selectionTagPresence() is unchanged and still asked, since Every and Mixed differ for other callers. Only this label collapses them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PEK9z5D3oa1nVmJ6xpQhBs
Diffstat (limited to 'src/busyindicator.h')
0 files changed, 0 insertions, 0 deletions