summaryrefslogtreecommitdiffstats
path: root/assets/icons/qtmaildir.svg
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-08-04 11:50:11 +0200
committerDanilo M. <danix@danix.xyz>2026-08-04 12:54:56 +0200
commit260b64d1d21afc2b124b98d13cce157e5b9d2f2d (patch)
tree4145e0c21fe71e4e739be0275020f7e7d7e8fa77 /assets/icons/qtmaildir.svg
parent0a160651cfb9a0f580bcc446941058a339e55643 (diff)
downloadqtmaildir-260b64d1d21afc2b124b98d13cce157e5b9d2f2d.tar.gz
qtmaildir-260b64d1d21afc2b124b98d13cce157e5b9d2f2d.zip
fix(tags): complete every tag in the list, not only the first
Reported by the user: in the Edit tags fields, the first tag suggested existing tags and the second did not. Typing a comma, a space and a letter offered nothing. QLineEdit::setCompleter hands completion to the line edit, which overwrites the completer's prefix with the widget's ENTIRE text on every keystroke. These fields hold a comma-separated list, so once one reads "unread, fl" that whole string is matched against the tag names, nothing matches, and completion silently stops after the first tag. Confirmed with a probe: the prefix really is "unread, fl" and the completion count really is zero. Attach with setWidget instead, which keeps the popup anchored without ceding control of the prefix, and drive it from the token under the cursor on every edit. Setting the prefix from a textEdited handler while leaving setCompleter in place does NOT work, which was the first attempt: the line edit sets it again afterwards. Accepting a candidate needed the same treatment, and is the other half of the fix. QCompleter's own insertion replaces the whole field, so taking "flagged" from the popup would have discarded every tag already typed. replaceCurrentToken() overwrites only the token under the cursor and keeps the separator's spacing, so the result is "unread, flagged" rather than "unread,flagged". This is the same defect QueryCompleter hit in c98b179. Having now cost two debugging rounds, it is written into CLAUDE.md as a Qt trap rather than a property of either class, together with the reason a test using setText() passes against it: setText does not drive a completer at all, so the keys have to be typed. Both new tests were confirmed to fail against setCompleter before the fix was kept. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'assets/icons/qtmaildir.svg')
0 files changed, 0 insertions, 0 deletions