diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-17 10:06:12 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-17 10:06:12 +0200 |
| commit | 1c68c391cd10b5726d082d487b97e7decb823512 (patch) | |
| tree | 803bf7f950f3475d122742f2588d6a8daa189a13 /desktop/Module.qml | |
| parent | 74fde3e0dae5a40c522ada14cf04945f3c806730 (diff) | |
| download | quickshell-1c68c391cd10b5726d082d487b97e7decb823512.tar.gz quickshell-1c68c391cd10b5726d082d487b97e7decb823512.zip | |
desktop: settings search finds rows, and a hit reveals its row
Search used to stop at the page: clicking a result opened it at the top
and left the setting to be found by eye. Now each settings module keeps
its rows as searchItems, {text, key}, reread on every window open since
the page itself is not loaded until shown: git runs gitcfg list, and
autostart watches its file. A row hit opens the page, and Page.reveal()
finds the row whose objectName is the key, waiting up to 3s for the
page's own data, scrolls to it and flashes it in the accent. The reveal
lives in Page, so a page only names its rows.
Git's long keyword list was a stand-in for exactly this and is cut to
"gitconfig". The autostart page takes its path from the module now that
both read the file.
Also corrects the AGENTS note on missed hot reloads: it blamed sed -i
replacing the file, but the Edit tool writes a new inode too and usually
reloads. The cause is unknown; the note now says how to detect it and
that a process that stops watching needs a restart.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'desktop/Module.qml')
| -rw-r--r-- | desktop/Module.qml | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/desktop/Module.qml b/desktop/Module.qml index 448fa7b..a1817a4 100644 --- a/desktop/Module.qml +++ b/desktop/Module.qml @@ -46,6 +46,13 @@ QtObject { // settings buried inside the page, which is not loaded until opened. property list<string> keywords: [] + // The rows inside a settings page, for the search: [{text, key}]. key is + // the objectName of the row in the page, which the window scrolls to and + // highlights. Kept by the module because the page is not loaded until + // opened; refresh() rereads it, and the window calls it on open. + property var searchItems: [] + function refresh() {} + // Whether the drawer's grid shows a tile. False for a module reached // some other way: the user page opens from the drawer's header row. property bool tiled: !settings |
