diff options
| author | Danilo M. <danix@danix.xyz> | 2026-08-19 09:54:53 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-08-19 09:54:53 +0200 |
| commit | 44b341f774a706d70509751b0251793e1c5a34f5 (patch) | |
| tree | b97976cd9e833c6f144318a8c94562577c629ea5 /src/keymap.cpp | |
| parent | b7d8ca35d74a9531ad292d9e875803964f6e0043 (diff) | |
| download | qtmaildir-44b341f774a706d70509751b0251793e1c5a34f5.tar.gz qtmaildir-44b341f774a706d70509751b0251793e1c5a34f5.zip | |
feat: find mail tagged deleted but never moved to trash
Every version before item 103 tagged a message `deleted` and left its file
exactly where it was, so deleted mail accumulated in the inboxes with only a
chip to say otherwise. `Find stranded deleted mail` runs the query that finds
it: tagged `deleted`, and not inside any configured trash folder.
It reports and moves nothing. Acting on its own would be a bulk delete with no
selection behind it, and the user asked for something they could come back to
and review. Repeatable rather than a startup migration, for the same reason:
mail reaches this state again whenever another client tags without moving.
A menu entry only, at the user's request, so it cannot be confused with the
Trash filter beside the other four.
Also adds everyActionIsReachableFromAMenu(), which asserts the fifth
registration site nothing enforced. CLAUDE.md documents four places; a menu is
the fifth, and `restore` shipped on this branch reachable by a chord and by
nothing a user could see. The new test found three more of the same:
open_thread, clear_pane and clear_selection were all keyboard-only. All three
now sit in the View menu.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'src/keymap.cpp')
| -rw-r--r-- | src/keymap.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/keymap.cpp b/src/keymap.cpp index 7a08a58..76c6b60 100644 --- a/src/keymap.cpp +++ b/src/keymap.cpp @@ -32,6 +32,7 @@ QStringList KeyMap::knownActions() QStringLiteral("archive"), QStringLiteral("delete"), QStringLiteral("restore"), + QStringLiteral("cleanup_stranded"), QStringLiteral("spam"), QStringLiteral("toggle_unread"), QStringLiteral("mark_all_read"), @@ -118,6 +119,11 @@ QList<QPair<QString, QString>> KeyMap::defaultBindings() // Restore is only enabled in the trash view, so its key is dead // elsewhere rather than doing something surprising. { QStringLiteral("Ctrl+R"), QStringLiteral("restore") }, + // Item 103's cleanup. A chord rather than a plain key: it replaces the + // whole view, and it is reached from a menu far more often than from + // the keyboard. Ctrl+Shift+D is message_details and Ctrl+Alt+D is + // delete_thread, so this takes the T of "trash". + { QStringLiteral("Ctrl+Alt+T"), QStringLiteral("cleanup_stranded") }, { QStringLiteral("Ctrl+Shift+S"), QStringLiteral("spam") }, { QStringLiteral("Ctrl+U"), QStringLiteral("toggle_unread") }, // Shifted against Ctrl+U, which toggles unread on the selection: this |
