diff options
| author | Danilo M. <danix@danix.xyz> | 2026-08-07 10:32:08 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-08-07 10:32:08 +0200 |
| commit | 6935bfc99ed0df5c79867f7015ba04041e03f908 (patch) | |
| tree | 38c407c5ce7a5ae55331c89603fa2b6e4776d147 /tests/test_config.cpp | |
| parent | db4dbbf4bf4fd8aab1a9e20d87c266ce7836a946 (diff) | |
| download | qtmaildir-6935bfc99ed0df5c79867f7015ba04041e03f908.tar.gz qtmaildir-6935bfc99ed0df5c79867f7015ba04041e03f908.zip | |
fix(tags): the Remove field suggests only tags the selection has
Both TagDialog fields built their completer from knownTags, the whole
database's tag list, so removing a tag offered every tag in existence
rather than the handful the selected threads actually carry.
The candidates were already in the dialog: currentTags, used until now
only to render the checkbox list. The constructor now walks two
(field, vocabulary) pairs instead of two fields sharing one list, with
knownTags for Add and currentTags.keys() for Remove. On a multi-thread
selection that is the union, not the intersection, since removing a tag
two of three threads carry is a meaningful request.
The setWidget and per-token prefix machinery is untouched: these fields
hold a comma-separated list, and QLineEdit::setCompleter is the trap
this dialog already works around. Only the candidate list changed.
Completion stays a suggestion, never a whitelist, so a tag absent from
the candidates still applies.
Tests type keys rather than using setText, which does not drive a
completer at all. Verified load-bearing by mutation: reverting the
Remove vocabulary to knownTags fails the new test.
Closes item 48.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'tests/test_config.cpp')
0 files changed, 0 insertions, 0 deletions
