diff options
| author | Danilo M. <danix@danix.xyz> | 2026-08-03 20:52:17 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-08-04 12:54:15 +0200 |
| commit | eb56cf5bb04771244f7bb90eadef165ccc5b9a94 (patch) | |
| tree | 777323e12ba774abd45f05d4a876729f37cb7e0c | |
| parent | ed5f795869b2f63b8f7e164239e4afcf9f13bb77 (diff) | |
| download | qtmaildir-eb56cf5bb04771244f7bb90eadef165ccc5b9a94.tar.gz qtmaildir-eb56cf5bb04771244f7bb90eadef165ccc5b9a94.zip | |
keymap: register complete_query bound to Ctrl+Space
KeyMap::defaultBindings() is the single source of truth for shortcuts:
the menus, the shortcut reference dialog and loadDefaults() all read it,
so registering here makes the binding appear in the reference and stay
rebindable from [keys] without any of them disagreeing.
Ctrl+Space is a modifier plus a named key, so it sidesteps the bare
capital trap in normalizeSequence() and needs no Shift on any layout.
Verified it parses to a single non-empty combination that round-trips to
"Ctrl+Space", and it collides with no existing default.
Note test_mainwindow now fails its everyKnownActionIsRegistered()
assertion: MainWindow does not yet implement complete_query. That wiring
is a separate task, and the assertion firing is the intended signal.
| -rw-r--r-- | src/keymap.cpp | 5 | ||||
| -rw-r--r-- | tests/test_keymap.cpp | 8 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/keymap.cpp b/src/keymap.cpp index 22c8da1..d8aacc5 100644 --- a/src/keymap.cpp +++ b/src/keymap.cpp @@ -33,6 +33,7 @@ QStringList KeyMap::knownActions() QStringLiteral("toggle_unread"), QStringLiteral("flag"), QStringLiteral("focus_query"), + QStringLiteral("complete_query"), QStringLiteral("toggle_html"), QStringLiteral("load_remote"), QStringLiteral("zoom_in"), @@ -64,6 +65,10 @@ QList<QPair<QString, QString>> KeyMap::defaultBindings() { QStringLiteral("Ctrl+U"), QStringLiteral("toggle_unread") }, { QStringLiteral("Ctrl+I"), QStringLiteral("flag") }, { QStringLiteral("Ctrl+L"), QStringLiteral("focus_query") }, + // Ctrl+Space is the completion idiom users already carry over from + // shells and editors, and it is a named key rather than a symbol, so + // no layout has to shift it. + { QStringLiteral("Ctrl+Space"), QStringLiteral("complete_query") }, { QStringLiteral("Ctrl+H"), QStringLiteral("toggle_html") }, { QStringLiteral("Ctrl+M"), QStringLiteral("load_remote") }, // Ctrl++ is what the '+' key really delivers on a layout where '+' is diff --git a/tests/test_keymap.cpp b/tests/test_keymap.cpp index 0fb4f57..8f6a6af 100644 --- a/tests/test_keymap.cpp +++ b/tests/test_keymap.cpp @@ -37,8 +37,16 @@ private slots: void defaultsDoNotCollide(); void everyDefaultIsAKnownAction(); void everyDefaultParses(); + void completeQueryIsBoundByDefault(); }; +void TestKeyMap::completeQueryIsBoundByDefault() +{ + QVERIFY(KeyMap::knownActions().contains(QStringLiteral("complete_query"))); + QCOMPARE(KeyMap::defaultSequenceFor(QStringLiteral("complete_query")), + QKeySequence(QStringLiteral("Ctrl+Space"))); +} + void TestKeyMap::everyDefaultParses() { // A default that does not parse is a dead binding, the failure mode |
